1213 A认识B,B认识C,就相当于ABC都认识,便可以坐在一张桌子上
输入T组数,有N个人,再输入M对人关系
可是为什么WA???↓
#include<iostream>
using namespace std;
int pre[1011];
int find(int x)
{
return pre[x]!=x?find(pre[x]):x;
}
void join(int x,int y)
{
int fx = find(x);
int fy = find(y);
if(fx!=fy) pre[x] = fy;
}
int main()
{
int i,t,m,n,a,b,sum;
while (cin>>t)
{
memset(pre,0,sizeof(pre));
while (t--)
{
cin>>m>>n;
for (i = 1; i <= m; i++)
pre[i] = i;
while (n--)
{
cin>>a>>b;
join(a,b);
}
sum =0;
for (i = 1; i <= m; i++)
if(pre[i] == i) sum++;
cout<<sum<<endl;
}
}
return 0;
}

本文探讨了一种使用并查集解决社交网络中朋友关系问题的算法实现。通过输入人数及人际关系,利用并查集的数据结构来计算不同朋友圈的数量。文章详细介绍了并查集的基本原理、查找与合并操作,并提供了具体的C++实现代码。

300

被折叠的 条评论
为什么被折叠?



