好吧我承认这才是裸并查集.......没什么好说的,直接秒了吧
/
#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\n ", 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\n ", ans);
}
return 0;
}