zoukankan      html  css  js  c++  java
  • 1233. 全球变暖

    题意是求一共淹没几个岛,不是求剩下几个岛(这个更复杂一些,可能会出现岛屿增加的情况),用bfs+flood fill做

    #include<iostream>
    #include<queue>
    
    using namespace std;
    
    const int N = 1010;
    
    #define PII pair<int, int>
    #define x first
    #define y second
    
    char g[N][N];
    int st[N][N];
    int n;
    int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
    
    int bfs(int x, int y){
        queue<PII> q;
        q.push({x, y});
        
        int ans = 0;
        
        while(q.size()){
            auto h = q.front();
            int x = h.x, y = h.y;
            q.pop();
            
            ans ++;
            
            int d = 0;
            
            for(int i = 0; i < 4; i ++){
                int a = x + dx[i], b = y + dy[i];
                if(a < 0 || a >= n || b < 0 || b >= n || st[a][b]) continue;
                if(g[a][b] == '.'){
                    d = 1;
                    continue;
                }
                st[a][b] = 1;
                q.push({a, b});
            }
            if(d) ans --;
        }
        
        return ans;
    }
    
    int main(){
        cin >> n;
        
        for(int i = 0; i < n; i ++) cin >> g[i];
               
        int res = 0; 
        for(int i = 0; i < n; i ++)
            for(int j = 0; j < n; j ++)
                if(g[i][j] == '#' && st[i][j] == 0){
                    st[i][j] = 1;
                    res ++;
                    if(bfs(i, j)) res --;
                }
                
        cout << res;
        
        return 0;
    }
    
  • 相关阅读:
    Ubuntu下多版本软件的管理
    关于高考
    Openca安装笔记
    Nginx+uwsgi+python配置
    cpabe的安装
    线形同余法求随机数
    world wind 之 applet 篇
    0909 海贼王我当定了
    实验0:了解和熟悉操作系统
    0316复利计算器3.0
  • 原文地址:https://www.cnblogs.com/tomori/p/13764592.html
Copyright © 2011-2022 走看看