您的位置:首页 > 其它

C - How Many Tables - HDU-1213

2015-07-22 15:38 148 查看
某个人举办生日宴会邀请了很多人来参加,不过呢,这些人有个毛病他们只会与熟悉人的坐在一起,当然他们也信奉朋友的朋友也是朋友这一法则,所以问最少需要多少张桌子......
好吧我承认这才是裸并查集.......没什么好说的,直接秒了吧
/////////////////////////////////////////////////////////////////////

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: