70分求调
  • 板块P2078 朋友
  • 楼主BYR_KKK
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/7/13 07:29
  • 上次更新2023/11/3 10:12:24
查看原帖
70分求调
802664
BYR_KKK楼主2023/7/13 07:29
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1e4+10,maxm=2e4+10;
int ta[maxn],tb[maxn];//ta存储男性公司,tb存储女性公司 
int sum_in_ta=0,sum_in_tb=0;
int ga(int p){//处理男性公司 
	if(ta[p]==p) return p;
	else{
		int q=ga(ta[p]);
		ta[p]=q;
		return ta[p];
	}
}
int gb(int p){//处理女性公司 
	if(tb[p]==p) return p;
	else{
		int q=gb(tb[p]);
		tb[p]=q;
		return tb[p];
	}
}
int main(){
	int n,m,p,q;
	cin>>n>>m>>p>>q;
	int mi=min(n,m),ma=max(n,m);
	for(int i=1;i<=mi;i++) ta[i]=i,tb[i]=i;
	for(int i=mi+1;i<=ma;i++){
		if(mi==n) ta[i]=i;
		else tb[i]=i;
	} 
	for(int i=1;i<=p;i++){//处理A公司:男性公司 
		int x,y;
		cin>>x>>y;
		if(ga(x)!=ga(y)){
			ta[ga(x)]=ga(y);
		}
	}
	for(int i=1;i<=q;i++){//处理B公司:女性公司 
		int x,y;
		cin>>x>>y;
		x=-x,y=-y;
		if(gb(x)!=gb(y)){
			tb[gb(x)]=gb(y);
		}
	}
	for(int i=1;i<=n;i++)
		if(ga(ta[1])==ga(ta[i]) )sum_in_ta++;//记录答案 
	for(int j=1;j<=m;j++)
		if(gb(tb[1])==gb(tb[j]) )sum_in_tb++;
	cout<<min(sum_in_ta,sum_in_tb);
}

真的找不出问题来了,谢谢大佬

2023/7/13 07:29
加载中...