CE,但在自己电脑上对了
  • 板块P1551 亲戚
  • 楼主AutumnQ
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/8/24 20:24
  • 上次更新2023/11/3 01:25:57
查看原帖
CE,但在自己电脑上对了
1038710
AutumnQ楼主2023/8/24 20:24

在洛谷上CE,在电脑上过了样例......

#include<bits/stdc++.h>
using namespace std;
int p[5010],rank[5010];
void make_set(int x){
	p[x]=x;
	rank[x]=0;
}
int find_set(int x){
	if(x!=p[x])p[x]=find_set(p[x]);
	return p[x];
}
void union1(int x,int y){
	x=find_set(x);
	y=find_set(y);
	if(x!=y){
		if(rank[x]>rank[y])p[y]=x;
		else{
			p[x]=y;
			if(rank[x]==rank[y])rank[y]++;
		}
	}
}
bool ask(int x,int y){
	x=find_set(x);
	y=find_set(y);
	if(x==y)return true;
	return false;
}
int main(){
	int n,m,k;
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=n;i++){
		make_set(i);
	}
	for(int i=1;i<=m;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		union1(x,y);
	}
	for(int i=1;i<=k;i++){
		int a,b;
		scanf("%d%d",&a,&b);
		if(ask(a,b))printf("Yes\n");
		else printf("No\n");
	}
}
2023/8/24 20:24
加载中...