只有80分,两个点过不去
  • 板块P2078 朋友
  • 楼主lllllluogu
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/28 10:59
  • 上次更新2024/3/28 16:21:00
查看原帖
只有80分,两个点过不去
709586
lllllluogu楼主2024/3/28 10:59
#include <bits/stdc++.h>
using namespace std;
const int N=4e5+10,M=3e5;
int n,m,p,q,fa[N],cnt[N];
int find(int u){
	if(u!=fa[u]) fa[u]=find(fa[u]);
	return fa[u];
}
void unity(int u,int v){
	int fu=find(u),fv=find(v);
	if(fu!=fv){//或者把判断过程写到主函数也行
		fa[fu]=fv;
		cnt[fv]+=cnt[fu];
	}
}
int main(){
	cin>>n>>m>>p>>q;int x,y;
	for(int i=1;i<=N;i++)fa[i]=i,cnt[i]=1;//记得对cnt初始化,不然一直是0
	for(int i=1;i<=p;i++){
		cin>>x>>y;
		unity(x,y);
	}
	for(int i=1;i<=q;i++){
		cin>>x>>y;
		unity(x+M,y+M);
	}
	cout<<min(cnt[fa[1]],cnt[fa[-1+M]]);
}
2024/3/28 10:59
加载中...