HDU 2120 Ice_cream's world I(并查集)

来源:互联网 发布:淘宝如何申请部分退款 编辑:程序博客网 时间:2024/05/02 06:42

题目地址:HDU 2120

这题虽然字数不多,但就是看不懂。。意思是求最多有多少个被墙围起来的区域。显然就是求环的个数。然后用并查集求环个数就可以了。

代码如下:

#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;int bin[2000];int find1(int x){    return bin[x]==x?x:bin[x]=find1(bin[x]);}int main(){    int n, m, ans, a, b, f1, f2, i;    while(scanf("%d%d",&n,&m)!=EOF)    {        ans=0;        for(i=0;i<n;i++)            bin[i]=i;        while(m--)        {            scanf("%d%d",&a,&b);            f1=find1(bin[a]);            f2=find1(bin[b]);            if(f1==f2)                ans++;            else                bin[f2]=f1;        }        printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击