How Many Tables hdu1213(并)

来源:互联网 发布:淘宝差评有什么影响 编辑:程序博客网 时间:2024/05/18 06:36

http://acm.hdu.edu.cn/showproblem.php?pid=1213

#include<iostream>//很简单的并查集
#include<cstdio>
int s[1002];
//bool ss[1002];
 
 int find(int a)
 {
  int r = a;
  while(r != s[r])
   r = s[r];
  return r;
 }

 void merge(int a, int b)
 {
  if(a > b)
   s[b] = a;
  else
   s[a] = b;
 }
int main()
{
 int t, n, m, i, sum;
 scanf("%d", &t);
 while(t--)
 {
  scanf("%d%d", &n, &m);
  for(i =1; i <= n; i++)
  {
   s[i] =i;
  // ss[i]= false;
  }
  int a;
  int b;
  for(i = 0;i <m; i++)
  {
   scanf("%d%d", &a, &b);

   int aa = find(a);
   int bb = find(b);
  // ss[a] = true;
  // ss[b] = true;
   if(aa !=  bb)
   {
    merge(aa , bb);
   }


  }
  sum = 0;
  for( i =1; i<= n; i++)
  {
   if(s[i] == i)
    sum++;
  }
  printf("%d/n", sum);
 }
}

原创粉丝点击