杭电 hdu 1213 How Many Tables (并查集,简单题)
/* THE PROGRAM IS MADE BY PYY *//*----------------------------------------// Copyright (c) 2011 panyanyany All rights reserved. URL : http://acm.hdu.edu.cn/showproblem.php?pid=1213 Name : 1213 How Many Tables Date : Sunday, September 04, 2011 Time Stage : half an hour Result: 45414342011-09-04 14:28:07Accepted12130MS192K1230 BC++pyyTest Data :Review :很裸的并查集……水题//----------------------------------------*/#include <stdio.h>#include <string.h>#define max(a, b) ((a) > (b) ? (a) : (b))#define min(a, b) ((a) < (b) ? (a) : (b))#define MAXSIZE (1009)int tcase, n, m ;int ufSet[MAXSIZE] ;int find (int x){if (x != ufSet[x])ufSet[x] = find (ufSet[x]) ;return ufSet[x] ;}void merge (int pa, int pb){ufSet[pb] = pa ;}int main (){int i, j ;int a, b, pa, pb ;int cnt ;while (scanf ("%d", &tcase) != EOF){while (tcase--){for (i = 1 ; i < MAXSIZE ; ++i)ufSet[i] = i ;scanf ("%d%d", &n, &m) ;for (i = 1 ; i <= m ; ++i){scanf ("%d%d", &a, &b) ;pa = find (a) ;pb = find (b) ;if (pa != pb)merge (pa, pb) ;}cnt = 0 ;for (i = 1 ; i <= n ; ++i)if (find (i) == i)++cnt ;printf ("%d\n", cnt) ;}}return 0 ;}