zoukankan      html  css  js  c++  java
  • poj1562

    简单题

    View Code
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <queue>
    using namespace std;
    
    #define maxn 105
    
    struct Point
    {
        int x, y;
        Point()
        {}
        Point(int xx, int yy):x(xx), y(yy)
        {}
    };
    
    int n, m;
    bool grid[maxn][maxn];
    bool vis[maxn][maxn];
    int dir[8][2] = {{1, 0}, {1, 1}, {1, -1}, {0, 1}, {0, -1}, {-1, -1}, {-1, 0}, {-1, 1}};
    char st[maxn];
    
    void input()
    {
        memset(grid, 0, sizeof(grid));
        for (int i = 1; i <= n; i++)
        {
            scanf("%s", st);
            for (int j = 1; j <= m; j++)
            {
                grid[i][j] = (st[j - 1] == '@');
            }
        }
    }
    
    bool ok(Point a)
    {
        if (a.x > n || a.x < 1 || a.y > m || a.y < 1)
            return false;
        if (vis[a.x][a.y])
            return false;
        return grid[a.x][a.y];
    }
    
    void bfs(int sx, int sy)
    {
        queue<Point> q;
        q.push(Point(sx, sy));
        vis[sx][sy] = true;
        while (!q.empty())
        {
            Point u = q.front();
            q.pop();
            for (int i = 0; i < 8; i++)
            {
                Point v;
                v.x = u.x + dir[i][0];
                v.y = u.y + dir[i][1];
                if (ok(v))
                {
                    vis[v.x][v.y] = true;
                    q.push(v);
                }
            }
        }    
    }
    
    int main()
    {
    //    freopen("t.txt", "r", stdin);
        while (scanf("%d%d", &n, &m), n)
        {
            input();
            memset(vis, 0, sizeof(vis));
            int ans = 0;
            for (int i = 1; i <= n; i++)
                for (int j = 1; j <= m; j++)
                    if (grid[i][j] && !vis[i][j])
                    {
                        bfs(i, j);
                        ans++;
                    }
            printf("%d\n", ans);
        }
        return 0;
    }
  • 相关阅读:
    最简洁的Mysql修改密码,不会你打我
    两步解决jetbrains-agent-latest.zip不能拖入工作区
    JSON学习笔记
    【书评】【不推荐】《机器学习实战——基于Scikit-Learn和TensorFlow》
    weblogic更新部署
    功能网址
    jupyter快捷键
    MYSQL连接字符串参数说明
    C# 格式验证
    Supervisor
  • 原文地址:https://www.cnblogs.com/rainydays/p/2983169.html
Copyright © 2011-2022 走看看