我心思着也没问题啊
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=0;
char c=getchar();
while(c>'9'||c<'0'){
c=getchar();
}
while(c>='0'&&c<='9'){
x=(x<<1)+(x<<3)+(c^'0');
c=getchar();
}
return x;
}
int n,m,p,q,u,v,t,male,female;
int f[20001];
int find(int a){
if(f[a]!=a)f[a]=find(f[a]);
return f[a];
}
int main(){
n=read();
m=read();
p=read();
q=read();
for(int i=1;i<=2*n;i++){
f[i]=i;
}
for(int i=1;i<=p;i++){
u=read();
v=read();
f[find(u)]=find(v);
}
for(int i=1;i<=q;i++){
u=read();
v=read();
f[find(u+n)]=find(v+n);
}
t=find(1);
f[find(n+1)]=t;
for(int i=1;i<=2*n;i++){
if(find(i)==t){
if(i<=n)male++;
else female++;
}
}
cout<<min(male,female);
return 0;
}