HDU 畅通工程

来源:互联网 发布:linux 动态调试工具 编辑:程序博客网 时间:2024/05/16 15:14

简单的并查集题目。

#include<stdio.h>int fa[1005];int find(int x){    if(x!=fa[x])        fa[x]=find(fa[x]);      return fa[x];}void Union(int x,int y){      x=find(x);      y=find(y);      if(x!=y)     {         if(x>y)            fa[y]=x;        else            fa[x]=y;     }}int main(){       int t,n,m,a,b,i,ans;       while(scanf("%d%d",&n,&m)&&n)       {              ans=0;             for(i=1;i<=n;i++)                fa[i]=i;             while(m--)             {                 scanf("%d%d",&a,&b);                 Union(a,b);             }             for(i=1;i<=n;i++)                if(i==fa[i])                       ans++;ans--;            printf("%d\n",ans);       }}