并查集 HDU1232 畅通工程

来源:互联网 发布:淘宝裁决之镰 编辑:程序博客网 时间:2024/05/16 02:03
并查集基本入门 畅通工程 HDUhttp://acm.hdu.edu.cn/showproblem.php?pid=1232
#include<stdio.h>#define N 1000int set[N];void init(int n){    int i;    for(i=1;i<=n;++i)        set[i] = i;}int root(int x){    if(set[x]!=x)        set[x] = root(set[x]);    return set[x];}void merge(int a, int b){    int x = root(a);    int y = root(b);    if(x!=y)        set[x] = y;}int main(){    int city;    int way;    int i;    int a,b;    int result;    while(~scanf("%d %d",&city,&way)&&city!=0)    {        result = 0;        init(city);        for(i=1;i<=way;++i)        {            scanf("%d %d",&a,&b);            merge(a,b);        }        for(i=1;i<=city;++i)            if(root(i)==i)                result++;        printf("%d\n",result-1);    }    return 0;}

0 0
原创粉丝点击