好吧我承认这才是裸并查集.......没什么好说的,直接秒了吧
/////////////////////////////////////////////////////////////////////
#include<stdio.h>
const int maxn = 1005;
int f[maxn];
int Find(int x)
{
if(f[x] != x)
f[x] = Find(f[x]);
return f[x];
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int i, N, M, u, v;
scanf("%d%d", &N, &M);
for(i=1; i<=N; i++)
f[i] = i;
while(M--)
{
scanf("%d%d", &u, &v);
u = Find(u);
v = Find(v);
f[u] = v;
}
int ans = 0;
for(i=1; i<=N; i++)
{
if(f[i] == i)
ans++;
}
printf("%d ", ans);
}
return 0;
}
const int maxn = 1005;
int f[maxn];
int Find(int x)
{
if(f[x] != x)
f[x] = Find(f[x]);
return f[x];
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int i, N, M, u, v;
scanf("%d%d", &N, &M);
for(i=1; i<=N; i++)
f[i] = i;
while(M--)
{
scanf("%d%d", &u, &v);
u = Find(u);
v = Find(v);
f[u] = v;
}
int ans = 0;
for(i=1; i<=N; i++)
{
if(f[i] == i)
ans++;
}
printf("%d ", ans);
}
return 0;
}