zoukankan      html  css  js  c++  java
  • hdu 1198 Farm Irrigation

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <set>
    #include <map>
    #include <string>
    #include <math.h>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
    
    int n,m,bin[3000];
    char mp[55][55];
    
    int g[11][4]= {{1,0,0,1} ,{1,1,0,0}, {0,0,1,1}, {0,1,1,0},
                     {1,0,1,0},{ 0,1,0,1}, {1,1,0,1},{ 1,0,1,1},
                    {0,1,1,1},{ 1,1,1,0},{ 1,1,1,1} };
    
    int _find(int x)
    {
        while(x!=bin[x]) x=bin[x];
        return x;
    }
    
    void _union(int x,int y)
    {
        int a=_find(x),b=_find(y);
        if(a==b) return ;
        bin[a]=b;
    }
    
    void slove()
    {
        int i,j;
        for(i=0; i<n; i++)
            for(j=0; j<m; j++)
            {
                if(i&&g[mp[i][j]-'A'][0]&&g[mp[i-1][j]-'A'][2])
                    _union(i*m+j,(i-1)*m+j);
    
                if(j&&g[mp[i][j]-'A'][3]&&g[mp[i][j-1]-'A'][1])
                    _union(i*m+j,i*m+j-1);
            }
    }
    
    int main()
    {
        int i,j,ans,t;
        char s[100];
        while(~scanf("%d%d",&n,&m))
        {
            if(n==-1&&m==-1) break;
    
            for(i=0; i<n*m; i++) bin[i]=i;
    
            for(i=0; i<n; i++)
            {
                scanf("%s",mp[i]);
            }
    
            slove();
            ans=0;
    
            for(i=0; i<n*m; i++)
                if(bin[i]==i)
                {
                    ans++;
                }
            printf("%d
    ",ans);
        }
        return 0;
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    Linux vi/vim
    Linux 磁盘管理
    Linux 用户和用户组管理
    Linux 文件与目录管理
    Linux 文件基本属性
    Linux 远程登录
    Linux 忘记密码解决方法
    Linux 系统目录结构
    Linux 系统启动过程
    linux -- su和sudo命令的区别
  • 原文地址:https://www.cnblogs.com/xryz/p/4847980.html
Copyright © 2011-2022 走看看