HDU1213


认识的人可以坐在一起,求桌子的个数。


Sample Input
   
   
   
   
2 5 3 1 2 2 3 4 5 5 1 2 5
 

Sample Output
   
   
   
   
2 4


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include <queue>
#include<algorithm>
using namespace std;
#define min(a,b) ((a)>(b)?(b):(a))
#define min3(a,b,c) min(min(a,b),c)
int n,m;
int father[1001];
int find(int x)
{
  if(x!=father[x])
      return father[x]=find(father[x]);
  return x;
}
void meger(int x,int y)
{
   int a,b;
   a=find(x);
   b=find(y);
   if(a!=b)
       father[a]=b;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
      scanf("%d%d",&n,&m);
      for(int i=0;i<=n;i++)
          father[i]=i;
      int a,b;
      for(int i=0;i<m;i++)
      {
          scanf("%d%d",&a,&b);
          meger(a,b);
      }
      int k=0;
      for(int i=1;i<=n;i++)
          if(father[i]==i)
              k++;
      printf("%d\n",k);
      getchar();
    }
    //system("pause");

    return 0;
}


你可能感兴趣的:(HDU1213)