#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);
}
真的找不出问题来了,谢谢大佬