20pts,求调
  • 板块P2078 朋友
  • 楼主Andy1818
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/13 15:47
  • 上次更新2024/12/13 20:46:27
查看原帖
20pts,求调
1005260
Andy1818楼主2024/12/13 15:47

pts

#include<bits/stdc++.h>
using namespace std;
int sa[100004],sb[100004];
int bcga(int x){
	if(sa[x]==x){
		return x;
	}
	sa[x]=bcga(sa[x]);
	return bcga(sa[x]);
}
int bcgb(int x){
	if(sb[x]==x){
		return x;
	}
	sb[x]=bcgb(sb[x]);
	return bcgb(sb[x]);
}
int main(){
	int n,m,p,q,x,y,ansa=0,ansb=0,cnta,cntb;
	cin>>n>>m>>p>>q;
	for(int i=1;i<=n;i++){
		sa[i]=i;
	}
	for(int i=1;i<=p;i++){
		cin>>x>>y;
		sa[bcga(x)]=bcga(y);
	}
	cnta=sa[1];
	for(int i=1;i<=n;i++){
		if(cnta==sa[i]){
			ansa++;
		}
	}
	for(int i=1;i<=m;i++){
		sb[i]=i;
	}
	for(int i=1;i<=q;i++){
		cin>>x>>y;
		x=-x,y=-y;
		sb[bcgb(x)]=bcgb(y);
	}
	cntb=sb[1];
	for(int i=1;i<=m;i++){
		if(cntb==sb[i]){
			ansb++;
		}
	}
	cout<<min(ansa,ansb)<<endl;
	return 0;
}
2024/12/13 15:47
加载中...