社区讨论

RE + WA……

P2078朋友参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo332hpz
此快照首次捕获于
2023/10/23 23:59
2 年前
此快照最后确认于
2023/10/23 23:59
2 年前
查看原帖
代码;
CPP
#include<bits/stdc++.h>
using namespace std;
#define qwq ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N = 10010;
int n, m, p, q, a[N], b[N], ans1, ans2;

int find1(int i)
{
	if (a[i] == i)
		return i;
	return a[i] = find1(a[i]);
}

int find2(int i)
{
	if (b[i] == i)
		return i;
	return b[i] = find2(b[i]);
}

void merge1(int u, int v)
{
	u = find1(u), v = find1(v);
	a[v] = u;
}

void merge2(int u, int v)
{
	u = find2(u), v = find2(v);
	b[v] = u;
}

int main()
{
    qwq;
    cin >> n >> m >> p >> q;
    for (int i = 1; i <= n + m; ++ i)
    {
    	if (i <= n)
    		a[i] = i;
    	else
    		b[i] = i;
	}
	int u, v;
	for (int i = 1; i <= p + q; ++ i)
	{
		cin >> u >> v;
		if (i <= p)	
			merge1(u, v);
		else
			merge2(u, v);
	}
	int p = find1(1), q = find2(1);
	for (int i = 1; i <= n + m; ++ i)
	{
		if  (i <= n)
		{
			if (find1(i) == p)
				++ ans1;
		}
		else
		{
			if (find2(i) == q)
				++ ans2;
		}
	}
	cout << min(ans1, ans2);
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...