zoukankan      html  css  js  c++  java
  • Oil Deposits UVA

    https://vjudge.net/problem/UVA-572

    图的联通块问题,遍历整个图,对每个元素用DFS深搜,并将整个联通块写入相同的编号。(又叫种子填充floodfill)

    #include<iostream>
    #include<vector>
    #include<string>
    using namespace std;
    #define rep(i,n,t) for(int i=(n);i<(t);i++)
    #define maxm 150
    #define maxn 150
    int Book[maxn][maxm]; int n, m;
    vector<string> V;
    
    void dfs(int x, int y,int count)
    {
        Book[x][y] = count;
        rep(i, -1, 2) rep(j, -1, 2)
        {
            int xx = x + i; int yy = y + j;
            if (i == 0 && j == 0) continue;
            else if (xx < 0 || xx >= n || yy < 0 || yy >= m) continue;
            else if (!Book[xx][yy]&&V[xx][yy]=='@') dfs(xx, yy, count);
        }
    }
    
    
    
    
    int main()
    {
        int cnt=0;
        cin >> n >> m;
        while (n&&m)
        {    
            memset(Book, 0, sizeof(Book));
            V.clear();
            rep(i, 0, n)
            {
                string temp;
                cin >> temp;
                V.push_back(temp);
            }
            rep(i, 0, n) rep(j, 0, m)
            {
                if (!Book[i][j]&&V[i][j]=='@') dfs(i,j,++cnt);
            }
            cout << cnt<<endl; cnt = 0;
            cin >> n >> m;
        }
        return 0;
    }
  • 相关阅读:
    组合继承
    包装明星——封装
    多种添加公用方法的方式
    专有扩展
    插入标记
    mac 命令操作
    php(apache)切换版本
    SqlServer索引+约束篇章
    sqlserver 常用语法
    C# 通用数据访问类
  • 原文地址:https://www.cnblogs.com/worldcreator-zh/p/10539256.html
Copyright © 2011-2022 走看看