70pts求助!
查看原帖
70pts求助!
933808
Earth2023楼主2024/12/24 22:48
#include <iostream>
using namespace std;
int fa[10005], msgSize[10005], n, m, op, a, b;
int find(int now) {
	if (fa[now] != now) fa[now] = find(fa[now]);
	return fa[now];
}
void merge(int x, int y) {
	fa[find(y)] = find(x);
}
int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++) fa[i] = i;	
	for (int i = 1; i <= m; i++) {
		scanf("%d%d%d", &op, &a, &b);
		if (op == 1) merge(a, b);
		else {
			int root = find(a);
			for (int i = 1; i <= n; i++) if (find(i) == root) msgSize[i] += b;
		}	
	}
	for (int i = 1; i <= n; i++) printf("%d ", msgSize[i]);
	return 0;
}
2024/12/24 22:48
加载中...