HDOJ 1232 畅通工程

来源:互联网 发布:快手 知乎 编辑:程序博客网 时间:2024/05/01 18:30

http://acm.hdu.edu.cn/showproblem.php?pid=1232

题意:求最少还需要建设的道路数目。

思路:简单并查集,看还剩几个集合。

#include<stdio.h>int set[1500];int find(int x){    while(set[x]!=x)        x=set [x];    return x;}void merge(int x,int y){    x=find(x);    y=find(y);    if(y<x)        set[x]=y;    else if(y>x)        set[y]=x;}main(){    int n,m,i,x,y,cnt;    while(scanf("%d",&n)&&n)    {        scanf("%d",&m);        for(i=1;i<=n;i++)            set[i]=i;        while(m>0)        {            scanf("%d %d",&x,&y);            merge(x,y);            m--;        }        for(cnt=-1,i=1;i<=n;i++)            if(i==set[i])                cnt++;        printf("%d\n",cnt);    }    return 0;}

原创粉丝点击