0 1 矩阵

 1 #include<iostream>
 2 #include<queue>
 3 using namespace std;
 4 int m,n;
 5 int a[103][103];
 6 int dir[4][2]={1,0,0,1,-1,0,0,-1};
 7 int book[103][103];
 8 struct node{
 9     int x;
10     int y;
11     int step;
12     node(int xx,int yy,int step1):x(xx),y(yy),step(step1){
13     }
14 };
15 queue<node> q;
16 void bfs(){
17     while(!q.empty()){
18         node s=q.front();
19         for(int i=0;i<4;i++){
20             int dx=s.x+dir[i][0];
21             int dy=s.y+dir[i][1];
22             if(dx>=1&&dx<=m&&dy>=1&&dy<=n&&a[dx][dy]==1&&book[dx][dy]==0){
23                 book[dx][dy]=1;
24                 q.push(node(dx,dy,s.step+1));
25                 a[dx][dy]=s.step+1;
26             }
27         }
28         q.pop();
29     }
30 }
31 int main(){
32     scanf("%d%d",&m,&n);
33     for(int i=1;i<=m;i++){
34         for(int j=1;j<=n;j++){
35             scanf("%d",&a[i][j]);
36             if(a[i][j]==0){
37                 q.push(node(i,j,0));
38             }
39         }
40     }
41     bfs();
42     for(int i=1;i<=m;i++){
43         for(int j=1;j<=n;j++){
44             printf("%d ",a[i][j]);
45         }
46         printf("\n");
47     }
48     return 0;
49 }

猜你喜欢

转载自www.cnblogs.com/fate-/p/12438947.html