洛谷 1162 填塗顏色 BFS

2021-10-23 16:38:40 字數 1117 閱讀 6108

洛谷1162題目鏈結

由數字0和1組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如:6×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

思路:將原圖的外圍加一層0,利用bfs搜尋與map[0][0]可以遍歷到並且值為0的點,那麼能遍歷到的一定是外圍的0,不論有幾個閉合圈都滿足,閉合圈內的0一定無法被搜尋到,bfs後,只需要遍歷陣列,將沒有被訪問到並且值為0的點改為2即可,其他按原來輸出即可,需要注意的是加一層0後,3*3的矩陣就會變成5*5,dfs的時候要遍歷到0~n+1(wa了一次)。

ac**如下:

#include #include #include #include using namespace std;

int n;

//遍歷可訪問的點

int xx = ;

int yy = ;

//存圖

int map[40][40];

//標記訪問

int vis[40][40];

int main()

}px.push(0);

py.push(0);

vis[0][0] = 1;

while(!px.empty())

}//當前節點已經沒有可以到達的節點了,彈出佇列

px.pop();

py.pop();

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

else

}cout<}

return 0;

}

填塗顏色 洛谷 1162

題目描述 由數字0 組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如 6x6的方陣 n 6 塗色前和塗色後的方陣如下 00 0000 0000 0000 1111 0011 1101 1001 0112 2111 0001 ...

洛谷oj1162 填塗顏色(bfs)

由數字0 組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如 6x6的方陣 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 ...

BFS 洛谷P1162填塗顏色

題目 題解 解法一 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...