牛客小白月赛4C——病菌感染

链接:https://www.nowcoder.com/acm/contest/134/C 
来源:牛客网 

  1 #include <bits/stdc++.h>
  2 using namespace std;
  3 #define N 1005
  4 int a[N][N],dir[2][4]={{-1,0,1,0},{0,1,0,-1}};//四周的格子
  5 int n,m,sum;
  6 
  7 bool judge(int x,int y)//判断周围的病菌数
  8 {
  9     int xx,yy,i;
 10     sum=0;//周围病菌数
 11     for (i=0;i<4;i++)
 12     {
 13         xx=x+dir[0][i];
 14         yy=y+dir[1][i];
 15         if (xx<1||xx>n||yy<1||yy>n)//超出范围
 16         {
 17             continue;
 18         }
 19         if (a[xx][yy]==1)
 20         {
 21             sum++;
 22         }
 23     }
 24     if (sum>=2)
 25     {
 26         return true;
 27     }
 28     return false;
 29 }
 30 
 31 void bfs(int i,int j)//广搜标记被感染的格子
 32 {
 33     if (i<=0||i>n||j<=0||j>n||false==judge(i,j)||a[i][j]==1)//若无a[i][j]==1则会死循环
 34     {
 35         return;
 36     }
 37 
 38     if (true==judge(i,j))
 39     {
 40         a[i][j]=1;
 41         bfs(i,j-1);
 42         bfs(i,j+1);
 43         bfs(i-1,j);
 44         bfs(i+1,j);
 45     }
 46 }
 47 
 48 void test()
 49 {
 50     int i,j;
 51     for (i=1;i<=n;i++)
 52     {
 53         for (j=1;j<=n;j++)
 54         {
 55             printf("%d",a[i][j]);
 56         }
 57         printf("\n");
 58     }
 59 }
 60 
 61 void solve()
 62 {
 63     int i,j,r,l;
 64     memset(a,0,sizeof(a));
 65     for (i=0;i<m;i++)
 66     {
 67         scanf("%d %d",&r,&l);
 68         a[r][l]=1;
 69     }
 70 //    test();
 71     for (i=1;i<=n;i++)
 72     {
 73         for (j=1;j<=n;j++)
 74         {
 75             if (a[i][j]==0)
 76             {
 77                 bfs(i,j);
 78             }
 79         }
 80     }
 81     for (i=1;i<=n;i++)//看是否全部被感染
 82     {
 83         for (j=1;j<=n;j++)
 84         {
 85             if (a[i][j]==0)
 86             {
 87                 printf("NO\n");
 88                 return;
 89             }
 90         }
 91      }
 92      printf("YES\n");
 93      return;
 94 }
 95 
 96 int main()
 97 {
 98     while (scanf("%d %d",&n,&m)!=EOF)
 99     {
100         solve();
101 //        test();
102     }
103 
104     return 0;
105 }

猜你喜欢

转载自www.cnblogs.com/hemeiwolong/p/9194650.html
今日推荐