代码求调
  • 板块P2700 逐个击破
  • 楼主dzzh
  • 当前回复3
  • 已保存回复3
  • 发布时间2025/2/8 17:09
  • 上次更新2025/2/8 18:06:07
查看原帖
代码求调
1344890
dzzh楼主2025/2/8 17:09
#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

2025/2/8 17:09
加载中...