HDOJ_1232 并查集 畅通工程
#include<stdio.h> int bin[1001]; int find(int x) { int t=x; while(bin[t]!=t) t=bin[t]; return t; } void insert(int x,int y) { int fx,fy; fx=find(x); fy=find(y); if(fx!=fy) bin[fx]=fy; } int main() { int n,m,a,b,i,sum; while(scanf("%d",&n),n) { for(i=0;i<=n;++i) bin[i]=i; scanf("%d",&m); for(i=m;i>0;i--) { scanf("%d%d",&a,&b); insert(a,b); } sum=-1; for(i=1;i<=n;++i) if(bin[i]==i) sum++; printf("%d\n",sum); } return 0; }