对一个点求look
  • 板块P1551 亲戚
  • 楼主chenyingwang
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/2/6 13:16
  • 上次更新2025/2/6 13:34:59
查看原帖
对一个点求look
1309909
chenyingwang楼主2025/2/6 13:16
似乎样例过了喵QvQ
#include<bits/stdc++.h>
using namespace std;
int n,m,p,Set[200005],x[1000005],y[1000005],ht[1000005];
int findS(int a)
{
	int r=a;
	while(Set[r]!=r)
	{
		r=Set[r];
	}
	return r; 
}
void hebin(int a,int b)
{
	int fa=findS(a),fb=findS(b);
	if(ht[fa]>ht[fb])
	{
		Set[fb]=Set[fa];
	}
	else if(ht[fa]<ht[fb])
	{
		Set[fa]=Set[fb];
	}
	else
	{
		Set[fb]=fa;
		ht[fa]++;
	}
}
int main()
{
    cin>>n>>m>>p;
    for(int i=1;i<=m;i++)
    {
    	cin>>x[i]>>y[i];
    	Set[x[i]]=x[i];ht[x[i]]=1;
    	Set[y[i]]=y[i];ht[y[i]]=1;
	}
	for(int i=1;i<=m;i++)
	{
		hebin(x[i],y[i]);
	}
	int p1,p2;
	for(int i=1;i<=p;i++)
	{
		cin>>p1>>p2;
		if(findS(p1)==findS(p2))cout<<"Yes\n";
		else cout<<"No\n";
	}
    return 0;
}

(' 3 ')

2025/2/6 13:16
加载中...