全球变暖

#include<iostream>
#include <queue>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
const int N = 1010;
char s[N][N];
bool t[N][N];
int n;
int ans;
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
bool  bfs(PII cod)
{
    queue<PII>q;
    q.push(cod);
    t[cod.x][cod.y] = true;
     bool  land = false;
    while(q.size())
    {
      PII r = q.front();
      q.pop();
      bool sea = false;
      for(int i = 0; i < 4; i ++)
      {
          int x = dx[i] + r. x, y = dy[i] + r.y;
          if(x < 1 || x > n || y < 1 || y > n)continue;
          if(t[x][y])continue;
          if(s[x][y] == '.')
          {
              sea = true;
              continue;
          }
          if(s[x][y]=='#')
          {
              t[x][y] = true;
              q.push({x, y});
          }
      }
      if(sea == false)
      {
          land = true;
      }
    }
   return land;
}
int main()
{
    cin >>n;
    int cnt  = 0;
    for(int i = 1; i <= n; i ++)
    {
            for(int j = 1; j <= n; j ++)
            {
                cin >> s[i][j];
            }
    }
    
    for(int i = 1; i <=  n; i ++)
    {
        for(int j = 1; j <= n; j ++)
        {
            if(t[i][j] == false && s[i][j] == '#')
            {
                bool f = bfs({i, j});
                if(f) ans ++;
                cnt ++;
            }
        }
    }
    cout << cnt - ans << endl;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务