题目大意:

并查集魔板题。

代码:

#include<iostream>
#include<math.h>
#include<stdio.h>
#include<string.h>
#define maxn 1500
using namespace std;

int test;
int n,m;
int boss[maxn];
void init()
{
    for(int i=0;i<maxn;i++)
    {
        boss[i]=i;
    }
}

void add(int a,int b)
{
    if(boss[a]==a&&boss[b]==b)
    {
        boss[a]=b;
        return;
    }
    boss[a]=boss[boss[a]];
    boss[b]=boss[boss[b]];
    add(boss[a],boss[b]);
}

int main()
{
    cin>>test;
    while(test--)
    {
        init();
        cin>>n>>m;
        for(int i=1;i<=m;i++)
        {
            int a,b;
            cin>>a>>b;
            add(a,b);
        }
        int s=0;
        for(int i=1;i<=n;i++)
        {
            if(boss[i]==i)
            {
                s++;
            }
        }
        cout<<s<<endl;
    }
}