BFS 洛谷P1162填塗顏色

2021-09-12 02:29:18 字數 1421 閱讀 4872

題目

題解

解法一:bfs

#includeusing namespace std;

const int m=31;

bool vis[m][m];

int n,m,a,b,c,map[m][m];

queue q;

void bfs(int x,int y)

}int main()

} for(int i=1;i<=n;i=i+n-1)}

for(int i=1;i<=n;i=i+n-1)}

for(int i=1;i<=n;i++);

int dy[4]=;

int n,i,j;

void dfs(int p,int q)

int main()

dfs(0,0);//用dfs遍歷所有圈外的0

//圖形外面的一圈是0,這是乙個人為設定的外連通圈,可以借助此遍歷所有圈外的0,達到染色的目的

解法三:先找到乙個在圈內的點,然後把這個連通塊染色為2

#includeusing namespace std;

int a[35][35];

int n,i,j,k;

bool b[5];

int main()

for(k=i;k<=n;k++)if(a[k][j]==1)

for(k=1;k<=j;k++)if(a[i][k]==1)

for(k=j;k<=n;k++)if(a[i][k]==1)

if(b[1]&&b[2]&&b[3]&&b[4]) a[i][j]=2;

}for(i=1;i<=n;i++)

int main(){

cin>>n;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++) cin>>a[i][j];

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

if(a[i][j]==0)

{//找到乙個0 用dfs對圈裡的連通塊進行染色

洛谷 P1162 填塗顏色(bfs)

由數字0組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如 6 6的方陣 n 6 每組測試資料第一行乙個整數n 1 n 30 接下來n行,由0和1組成的n n的方陣。方陣內只有乙個閉合圈,圈內至少有乙個0。感謝黃小u飲品指出本...

洛谷P1162 填塗顏色 bfs

題目鏈結 題意 有乙個0和1組成的矩陣,一些1組成乙個閉合圈,圈住一些0,現在要把被圈住的這些0變成2輸出。思路 bfs,判斷每個0可以到達的邊界。如果這個0是可以到達矩陣的邊界的說明沒有被圈住。bfs時不把1加入佇列,如果最後也不能到達邊界說明是被圈住的,變成2就行了。1 include2 inc...

洛谷p1162填塗顏色(bfs題目)

原題 本題是我第乙個用bfs的題目,bfs是隊裡的shawnzhou大佬教我的,在這裡先感謝他一下啦 這個題的思路也是他提供的,還是需要一定的練習才行鴨!對於本題來說的話,先將外面的0塗成2 然後遍歷圖,將0和2塗反色就可以了 注意bfs的使用哦 實現 include using namespace...