#1、#2 AC,其余WA 求调!

P1162 填涂颜色

@[CppCpp ](https://www.luogu.com.cn/user/1431719) AC代码 ``` #include<bits/stdc++.h> using namespace std; struct p { int x; int y; int step; }; queue<p>dl; int n,a[40][40],v[40][40]; int dx[4]={0,1,0,-1}; int dy[4]={0,1,-1,0}; void bfs(int x,int y) { while(!dl.empty()) { dl.pop(); } p start; start.x=x; start.y=y; dl.push(start); while(!dl.empty()) { p shou; shou=dl.front(); dl.pop(); for(int i=0;i<=3;i++) { int tx=shou.x+dx[i]; int ty=shou.y+dy[i]; if(a[tx][ty]==0&&tx>0&&ty>0&&tx<=n&&ty<=n) { p temp; temp.x=tx; temp.y=ty; dl.push(temp); a[tx][ty]=3; } } } return; } int main() { cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { cin>>a[i][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if((i==1||j==1||i==n||j==n)&&a[i][j]==0) { a[i][j]=3; bfs(i,j); } } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[i][j]==3) { cout<<0<<" "; } if(a[i][j]==0) { cout<<2<<" "; } if(a[i][j]==1) { cout<<1<<" "; } } cout<<endl; } } ```
by jingwenhan @ 2024-08-25 16:01:52


求一下关哈
by jingwenhan @ 2024-08-25 16:02:47


@[CppCpp](/user/1431719) 你用洪水填充(DFS 和 BFS 好像都可以吧)把能走到的0标记为特殊值,再循环整个二维数组,如果该点为特殊值,输出0;否则输出原本的值。
by huangtianzeC @ 2024-08-25 16:19:34


|