#include<stdio.h> int p[100005]; int find(int n) { if(p[n]!=n) { p[n]=find(p[n]); } return p[n]; } int main() { int n,m,count,i,a,b; while(scanf("%d",&n)!=EOF) { if(n==0) { break; } scanf("%d",&m); for(i=1;i<=n;i++) { p[i]=i; } for(i=1;i<=m;i++) { scanf("%d%d",&a,&b); a=find(a); b=find(b); p[a]=b; } count=-1; for(i=1;i<=n;i++) { if(p[i]==i) { count++; } } printf("%d\n",count); } }
Hdu1232 - 畅通工程 - 并查集
最新推荐文章于 2021-02-20 18:28:35 发布