MLE 求助玄关
  • 板块P2078 朋友
  • 楼主lihl
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/30 21:18
  • 上次更新2024/11/30 21:44:55
查看原帖
MLE 求助玄关
711887
lihl楼主2024/11/30 21:18
#include<bits/stdc++.h>
using namespace std;
#define fileIO(s) do {freopen(s".in", "r", stdin); freopen(s".out", "w", stdout);} while(false)
#define endl '\n'
constexpr int N = 1e5 + 10;

int f1[N],f2[N];
void init(int f[],int x){
	for(int i = 1;i <= x;i ++){
		f[i] = i;
	}
	return ;
}
int find(int f[],int x){
	return f[x] == x ? x : f[x] = find(f,x);
}
void merge(int f[],int x,int y){
	if(find(f,x) != find(f,y)) f[find(f,x)] = find(f,y);
	return ;
}
int main(){
	cin.tie(nullptr),cout.tie(nullptr);
	int n,m,p,q,x,y;
	cin >> n >> m >> p >> q;
	init(f1,n);
	init(f2,m);
	for(int i = 1;i <= p;i ++){
		cin >> x >> y;
		merge(f1,x,y);
	} 
	for(int i = 1;i <= q;i ++){
		cin >> x >> y;
		merge(f2,abs(x),abs(y));
	}
	int ans1 = 0,ans2 = 0;
	for(int i = 1;i <= n;i ++){
		if(find(f1,i) == find(f1,1)){
			ans1 ++;
		}
	}
	for(int i = 1;i <= m;i ++){
		if(find(f2,i) == find(f2,1)){
			ans2 ++;
		}
	}
	cout << min(ans1 , ans2) << endl;
	return 0;
}
2024/11/30 21:18
加载中...