HDU 1232 畅通工程
并查集……
#include <cstdio> int f[1005],q,w,n,m; int sf(int x){return x==f[x]?x:f[x]=sf(f[x]);} int main(){ while(~scanf("%d",&n)){ if(n==0)break; scanf("%d",&m); for(int i=1;i<=n;i++)f[i]=i; for(int i=0;i<m;i++){ scanf("%d%d",&q,&w); f[sf(q)]=sf(w); }int ans=-1; for(int i=1;i<=n;i++)if(f[i]==i)ans++; printf("%d\n",ans); } return 0; }
愿你出走半生,归来仍是少年