畅通工程 hdu 1223
#include<stdio.h> int father[1100],N,M; int find(int x) { return x==father[x]?x:father[x]=find(father[x]); } void merge(int x,int y) { x=find(x); y=find(y); if(x!=y) father[x]=y; } int main( ) { while(scanf("%d%d",&N,&M),N) { int i,j,a,b,count=1; for(i=1;i<=N;i++) father[i]=i; for(i=0;i<M;i++) { scanf("%d%d",&a,&b); if(find(a)!=find(b)) { merge(a,b); count++; } } printf("%d\n",N-count); } return 0; //N个城镇如果相通至少需要N-1条路 }
posted on 2011-04-30 11:00 more think, more gains 阅读(255) 评论(0) 编辑 收藏 举报