HDU 1198 Farm Irrigation【並查集+枚舉】

題目鏈接

代碼部分

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
#include <math.h>
#define ll long long
using namespace std;
const int maxn=52;
char maps[maxn][maxn];
int pre[maxn*maxn];
void init(int n)
{
    for(int i=1; i<=n; i++)
        pre[i]=i;
}
int Find(int x)
{
    if(pre[x]==x)
        return x;
    else
        return Find(pre[x]);
}
void mix(int x,int y)
{
    x=Find(x);
    y=Find(y);
    if(x==y)
        return;
    pre[x]=y;
}
int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        if(n==-1&&m==-1)
            break;
        init(n*m);
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=m; j++)
            {
                cin>>maps[i][j];
            }
        }
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=m; j++)
            {
                if(j+1<=m)
                {
                   if((maps[i][j+1]=='A'||maps[i][j+1]=='C'||maps[i][j+1]=='F'||maps[i][j+1]=='G'||maps[i][j+1]=='H'||maps[i][j+1]=='I'||maps[i][j+1]=='K')
                      &&(maps[i][j]=='B'||maps[i][j]=='D'||maps[i][j]=='F'||maps[i][j]=='G'||maps[i][j]=='I'||maps[i][j]=='J'||maps[i][j]=='K'))
                   {
                       mix((i-1)*m+j+1,(i-1)*m+j);
                   }
                }
                if(i+1<=n)
                {
                    if((maps[i][j]=='C'||maps[i][j]=='D'||maps[i][j]=='E'||maps[i][j]=='H'||maps[i][j]=='I'||maps[i][j]=='J'||maps[i][j]=='K')
                       &&(maps[i+1][j]=='A'||maps[i+1][j]=='B'||maps[i+1][j]=='E'||maps[i+1][j]=='G'||maps[i+1][j]=='H'||maps[i+1][j]=='J'||maps[i+1][j]=='K'))
                    {
                        mix((i-1)*m+j,i*m+j);
                    }
                }

            }
        }
        int num=0;
        for(int i=1; i<=n*m; i++)
        {
            if(pre[i]==i)
                num++;
        }
        printf("%d\n",num);
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章