社区讨论

代码求调

P2700逐个击破参与者 3已保存回复 3

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@m6vz6sd9
此快照首次捕获于
2025/02/08 17:10
去年
此快照最后确认于
2025/11/04 09:43
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;

const int N = 2e5+10;
int n, k, fa[N], b[N];
long long ans;
bool flag[N];

struct node{
	int x, y, z;
} a[N];

bool cmp(node a, node b) {
	return a.z > b.z;
}

int find(int x) {
	if(fa[x] == x) return x;
	return fa[x] = x;
}

int main() {
	cin >> n >> k;
	for(int i = 1; i <= k; i++) {
		cin >> b[i];
		flag[b[i]] = 1;
		
	}
	for(int i = 1; i <= n-1; i++) {
		cin >> a[i].x >> a[i].y >> a[i].z;
	}
	sort(a+1, a+n, cmp);
	for(int i = 0; i <= n; i++) fa[i] = i;
	for(int i = 1; i <= n-1; i++) {
		int fx = find(a[i].x);
		int fy = find(a[i].y);
		if(flag[fx] && flag[fy]) {
			ans += a[i].z;
		}
		fa[fx]=fy;
		flag[fy] |= flag[fx];
	}
	cout << ans << endl;
	return 0;
}
实在没看出哪错了,只对了#1#3

回复

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

正在加载回复...