样例都过不了求助(玄关QaQ)
查看原帖
样例都过不了求助(玄关QaQ)
1199534
ycy1124楼主2024/6/28 11:35
#include<bits/stdc++.h>
using namespace std;
int bj[100005];
int f[100005];
struct Node{
	int u,v,w;
}b[100005];
bool cmp(Node x,Node y){
	return x.w>y.w;
}
int fin(int x){
	if(x!=f[x])return f[x]=fin(f[x]);
	return x;
}
int main(){
	int n,k;
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++){
		f[i]=i;
	}
	for(int i=1;i<=k;i++){
		int x;
		scanf("%d",&x);
		bj[x]=1;
	}
	long long js=0,ans=0;
	for(int i=1;i<=n-1;i++){
		scanf("%d%d%d",&b[i].u,&b[i].v,&b[i].w);
		js+=b[i].w;
	}
	sort(b+1,b+n,cmp);
	for(int i=1;i<=n-1;i++){
		if(!bj[fin(b[i].v)]||!bj[fin(b[i].u)]){
			f[fin(b[i].u)]=fin(b[i].v);
			bj[fin(b[i].v)]=max(bj[fin(b[i].u)],bj[fin(b[i].v)]);
			ans+=b[i].w;
		}
	}
	printf("%lld",js-ans);
	return 0;
}
2024/6/28 11:35
加载中...