K求调
查看原帖
K求调
735264
__wjy__楼主2024/3/3 19:37
#include<iostream>
#include<algorithm>
using namespace std;
int n,p,fa[1200000],c[1200000],m = 1200000,sum;
struct Edge{
	int l,r,v;
}edge[1200000];
bool cmp(Edge x, Edge y){
	return x.v < y.v;
}
int find(int x){
	if(fa[x]!=x) fa[x]= find(fa[x]);
	return fa[x];
}
int con(int x,int y){
	fa[find(y)] = find(x);
}
int main(){
	cin>>n>>p;
	for(int i = 1; i <= n; i++){
		fa[i] = i;
		cin>>c[i];
		m = min(m,c[i]);
	}
	for(int i = 1; i <= p; i++){
		cin>>edge[i].l>>edge[i].r>>edge[i].v;
		edge[i].v = c[edge[i].l] + c[edge[i].r] + edge[i].v * 2;
	}
	sort(edge + 1, edge + p + 1, cmp);
	for(int i = 1; i <= p; i++){
		int s = edge[i].l;
		int t = edge[i].r;
		if(find(s) != find(t)){
			con(s,t);
			sum += edge[i].v;
		}
	}
	cout<<sum + m;
	return 0;
}

样例没问题,但全RE了

2024/3/3 19:37
加载中...