其他分享
首页 > 其他分享> > 基础实验4-2.8 部落 (25 分)

基础实验4-2.8 部落 (25 分)

作者:互联网

基础实验4-2.8 部落 (25 分)

简单并查集

#include<iostream>
#include<set>
using namespace std;
set<int> s;
int fa[10050];
int find(int x)
{
	if(fa[x]==x)
		return x;
	else
		return fa[x]=find(fa[x]);	
} 
int main()
{
	int n,q;
	cin>>n;
	int x,y,k,sum=0;
	for(int i=1;i<=10000;++i)
		fa[i]=i;
	while(n--){	
		cin>>k;
		k--;
		cin>>x;
		if(x>sum)
			sum=x;
		while(k--){
			cin>>y;
			if(y>sum)
				sum=y;
			int x1=find(x),y1=find(y);
			if(x1==y1)
				continue;
			fa[y1]=x1;
		}
	}
	for(int i=1;i<=sum;++i)
		s.insert(find(i));
	cout<<sum<<" "<<s.size()<<endl;
	cin>>q;
	while(q--){
		cin>>x>>y;
		x=find(x),y=find(y);
		if(x==y)
			cout<<"Y"<<endl;
		else
			cout<<"N"<<endl;
	} 
}

标签:25,部落,int,sum,cin,fa,2.8,y1,find
来源: https://blog.csdn.net/weixin_46309592/article/details/115629135