30求助
  • 板块P2078 朋友
  • 楼主MegaMay
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/8/3 17:03
  • 上次更新2023/11/6 21:24:08
查看原帖
30求助
162799
MegaMay楼主2020/8/3 17:03
#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 10001
using namespace std;
int read(){
	int x=0;
	char e=getchar();
	while(e<'0'||e>'9') e=getchar();
	while(e>='0'&&e<='9'){
		x=x*10+e-'0';
		e=getchar();
	}
	return x;
}
int n,m,p,q,f[maxn],f_[maxn],ans;
int cnt_1,cnt_2;
int find(int x){
	return f[x]=x?f[x]:f[x]=find(f[x]);
}
int find_(int x){
	return f_[x]=x?f_[x]:f_[x]=find(f_[x]);
}
int main(){
	n=read(),m=read(),p=read(),q=read();
	for(int i=1;i<=n;i++) f[i]=i;
	for(int i=1;i<=m;i++) f_[i]=i;
	for(int i=1;i<=p;i++){
		int fx=find(read()),fy=find(read());
		if(fx!=fy) f[max(fx,fy)]=min(fx,fy);
	}
	for(int i=1;i<=q;i++){
		int fx=find_(read()),fy=find_(read());
		if(fx!=fy) f_[max(fx,fy)]=min(fx,fy);
	}
	for(int i=1;i<=n;i++){
//		cout<<f[i]<<" ";
		if(f[i]==1) cnt_1++;
	}
	for(int i=1;i<=m;i++){
//		cout<<f_[i]<<" ";
		if(f_[i]==1) cnt_2++;
	}
//	printf("\n%d %d",cnt_1,cnt_2);
	printf("%d",min(cnt_1,cnt_2));
	return 0;
}
2020/8/3 17:03
加载中...