• POJ 1979


    POJ 1979

    BFS 连通块

    输入的(n)(m) 是反的要注意

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    using namespace std;
    #define endl '
    '
    const int N = 200;
    char g[N][N];
    int n,m,ans,sx,sy;
    int dx[4] = {0,0,1,-1};
    int dy[4] = {1,-1,0,0};
    bool st[N][N];
    struct node {
        int x,y;
    };
    void bfs(int x,int y) {
        queue<node> q;
        q.push({x,y});
        st[x][y] = 1;
        while(q.size()) {
            node t = q.front();
            q.pop();
            for(int i = 0;i < 8; ++i) {
                int nx = t.x + dx[i],ny = t.y + dy[i];
                if(nx >= 0 && nx < n && ny >= 0 && ny < m && g[nx][ny] == '.' && !st[nx][ny]) {
                    q.push({nx,ny});
                    st[nx][ny] = 1;
                    ans ++;
                }
            }
        }
    }
    int main() {
        ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
        while(cin >> m >> n && n && m) {
            memset(st,0,sizeof st);
            ans = 1;
            for(int i = 0;i < n; ++i)
                for(int j = 0;j < m; ++j) {
                    cin >> g[i][j];
                    if(g[i][j] == '@') sx = i,sy = j;
                }
            bfs(sx,sy);
            cout << ans << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    HDU 1013 Digital Roots
    HDU 1290 献给杭电五十周年校庆的礼物
    几何分割问题
    HDU 1222 Wolf and Rabbit
    HDU 1997 汉诺塔VII
    HDU 1443 Joseph
    HTML的标题样式
    HDU 1568 Fibonacci
    Hope
    HDU 1071 The area
  • 原文地址:https://www.cnblogs.com/lukelmouse/p/12427998.html
Copyright © 2020-2023  润新知