关于ARC164B酱紫写为什么不对
  • 板块学术版
  • 楼主sundyLIUXY
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/11 19:41
  • 上次更新2023/11/3 10:28:14
查看原帖
关于ARC164B酱紫写为什么不对
706737
sundyLIUXY楼主2023/7/11 19:41

自认为逻辑没问题罢

#include <bits/stdc++.h>
#define int long long
using namespace std;

int n, m, f[200010], a[200010], b[200010], c[200010];

void init() {
	for(int i = 1; i <= n; i++) 
		f[i] = i;
}
int find(int u) {
	if(f[u] == u) return u;
	return f[u] = find(f[u]);
}
void merge(int u, int v) {
	if(find(u) != find(v)) f[u] = v;
}

signed main() {
	scanf("%lld%lld", &n, &m);
	for(int i = 1; i <= m; i++)
		scanf("%lld%lld", &a[i], &b[i]);
	for(int i = 1; i <= n; i++) scanf("%lld", &c[i]);
	init();
	for(int i = 1; i <= m; i++)
		if(c[a[i]] != c[b[i]]) merge(a[i], b[i]);
	for(int i = 1; i <= m; i++) {
		if(c[a[i]] == c[b[i]] && find(a[i]) == find(b[i])) {
			printf("Yes");
			return 0;
		}
	}
	printf("No");

	return 0;
}
2023/7/11 19:41
加载中...