hdu 1213 How Many Tables(并查集~~)

这道题好早以前SK就给我们留的,当时不懂就一直没有写,今天做ZOJ1542太悲剧了 ,POJ过了,ZOJ就是不过,丫丫的,看到这个1213了,一直在收藏夹里,没做,给它A了。。。更深刻滴理解了并查集。。。

 

做这几道题我都不敢用cin了。。。光出错。。。

 

#include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; const int N = 1010; int pre[N]; int find(int x) { while(x!=pre[x]) x = pre[x]; return x; } int main(void) { int ncases,n,m,count,x,y,i,a,b; scanf("%d",&ncases); while( ncases-- ) { scanf("%d%d",&n,&m); count = 0; for(i=1; i<=n; i++) pre[i] = i; for(i=1; i<=m; i++) { scanf("%d %d",&x,&y); a = find(x); b = find(y); if( a!= b ) pre[b] = a; } for(i=1; i<=n; i++) { a = find(i); if( a == i ) count ++ ; } printf("%d/n",count); } return 0; }  

你可能感兴趣的:(hdu 1213 How Many Tables(并查集~~))