您的位置:首页 > 其它

HDU 1232 畅通工程(九度OJ 1012)

2014-04-12 20:10 246 查看
并查集问题。

就是需要修多少条道路将所有村子的连通。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define INF 100000001
using namespace std;
int a[1001];
int intset(int n)
{
    for(int i=0; i<=n; i++)
        a[i]=i;
}
int fa(int x)
{
    if(x!=a[x])
        x=fa(a[x]);
    return a[x];
}
int main()
{
    int n,m;
    while(scanf("%d",&n),n)
    {
        scanf("%d",&m);
        int x,y;
        intset(n);
        while(m--)
        {
            scanf("%d%d",&x,&y);
            x=fa(x),y=fa(y);
            if(x!=y)a[y]=x;
        }
        int ans=-1;
        for(int i=1;i<=n;i++)
        if(a[i]==i)ans++;
        printf("%d\n",ans);
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: