#11炸了,求调
查看原帖
#11炸了,求调
454444
StenvenPig楼主2024/7/14 14:14
#include<bits/stdc++.h>
using namespace std;
struct st{
	int id,w;
};
vector<st> e[260001];
long long n,p,c,v[100010],dis[100010],dis1[100010],w[100010];
long long sum=0x3f3f3f3f,cnt;
void belll(int star){
	memset(dis,0x3f,sizeof dis);
	memset(v,0,sizeof v);
	dis[star]=0;
	v[star]=1;
	queue<int> q;
	q.push(star);
	while(q.size()){
		int i=q.front();
		q.pop();
		v[i]=0;
		for(auto j:e[i]){
			if(dis[j.id]>dis[i]+j.w){
				dis[j.id]=dis[i]+j.w;
				if(!v[j.id]){
					q.push(j.id);
					v[j.id]=1;
				}
			}
		}
	}
}
int main() {
	cin>>n>>p>>c;
	for(int i=1;i<=n;i++){
		cin>>w[i];
	}
	for(int i=1;i<=c;i++){
		int x,y,z;
		cin>>x>>y>>z;
		e[x].push_back({y,z});
		e[y].push_back({x,z});
	}
	for(int j=1;j<=n;j++){
		belll(w[j]);
		for(int i=1;i<=p;i++){
			dis1[i]+=dis[i];
		}
	}
	for(int i=1;i<=p;i++){
		sum=min(sum,dis1[i]);
	}
	cout<<sum;
	return 0;
}
2024/7/14 14:14
加载中...