https://www.luogu.org/problem/P1162
デジタル0 0からなるマトリックス、閉じたループを有する任意の形状、デジタル閉ループ1は、場合にのみ、筐体左側へと右下構成されている。4 4つの方向。今、すべてのスペースを閉じた円内に充填されている必要があり2 、例えば2:6 \ 6タイムズ6 × マトリックス6(N-6 = N- = 6)、及び着色を着色する前の正方形は、以下:
0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 0 0 1
1 1 0 0 0 1
1 0 0 0 0 1
1 1 1 1 1 1
0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 2 2 1
1 1 2 2 2 1
1 2 2 2 2 1
1 1 1 1 1 1
入力形式
整数の各検査ライン(1 \ N-LE \ル30)N- N- (1 ≤ N- ≤ 3 0 )
次いで、N- 、N行によって0 0と1 の1S N- \タイムズN- N- × N-正方行列。
正方形内のみ黒丸、少なくとも円0 0
//はUに感謝黄は、この質問は同じデータとデータ形式ではないことを指摘したドリンク。修正(入力フォーマット)
出力フォーマット
私たちは、デジタル満たされている2 完全節骨2。
サンプル入力と出力
入力#1
6 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1
出力#1
0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 2 2 1 1 1 2 2 2 1 1 2 2 2 2 1 1 1 1 1 1 1
説明/ヒント
1 \ n \ル30 1 ≤ N ≤ 3 0
ソリューション:ダイレクト円0貧困層の需要を求めて、私たちは0マークが完全にループから出てくる、ループ0の外にマークすることができ、残りは円0です。
各垂直方向と水平方向の境界のために0からスタート
ACコード:
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 int型 ARR [ 33 ] [ 33 ]。 構造体STU { int型X、Y。 }。 int型のn; int型の D [ 4 ] [ 2 ] = { 1、0、0、1、 - 1、0、0、 - 1 }。 ボイド BFS(int型のx、int型のY){ キュー <STU> QUE。 ARR [X] [Y] = 3; que.push({X、Y})。 一方、(que.size()){ STU S = que.front()。 que.pop(); 以下のために(int型私= 0 ; I < 4 ; iが++ ){ int型 DX = s.x + D [i]が[ 0 ]。 int型 DY = s.y + D [i]を[ 1 ]。 もし(DX> = 1 DY &&> = 1 && DX <= N && DY <= N && ARR [DX] [DY] == 0 ){ ARR [DX] [DY] = 3 ; que.push({DX、DY})。 } } } } INT メイン(){ CIN >> N。 以下のために(int型 i = 1 ; iが<= N; I ++ ) のための(INT J = 1 ; J <= N; J ++ ) のscanf(" %dの"、およびARR [I] [J])。 用(int型 i = 1 ; iが<= N; iが++ ){ 場合(ARR [I] [ 1 ] == 0)BFS(I、1 )。 もし([I] [N] == ARR 0 BFS(I、N))。 もし(ARR [ 1 ] [I] ==0)BFS(1 、I)。 もし(ARR [n]は[I] == 0 )BFS(N、I)。 } のための(int型 i = 1 ; iが<= N; iが++ ){ ため(INT J = 1 ; J <= N; J ++ ) 場合(ARR [I] [J] == 3)COUT << 0 << " " ; それ以外の 場合(ARR [I] [J] == 0)coutの<< 2 << " "を。 他の coutの<< 1 << " "; coutの << てendl; } 戻り 0 。 }
私は、被写体の同じ種類をしたい:https://www.luogu.org/problem/P1506