floyd 8分求调
查看原帖
floyd 8分求调
1276876
17610182311www楼主2025/1/17 14:36
#include<bits/stdc++.h>
using namespace std;
int e[1300][1300];
int mmap[1000005];
int P,C;
int F;
int cnt[100005];
int main(){
	cin>>P>>F>>C;
	for(int i=1;i<=F;i++){
		cin>>mmap[i];
	}	
	for(int i=1;i<=C;i++){
		for(int j=1;j<=C;j++){
			e[i][j]=0x3f;
		}
		e[i][i]=0;
	}
//按边输入 
	for(int i=1;i<=C;i++){
		int u,v,w;
		cin>>u>>v>>w;
		e[u][v]=w;
		e[v][u]=w;
	}
	for(int k=1;k<=P;k++){
		for(int i=1;i<=P;i++){
			for(int j=1;j<=P;j++){
				if(e[i][j]>e[i][k]+e[k][j]){
					e[i][j]=e[i][k]+e[k][j];
				}
			}
		}
	}

	for(int j=1;j<=P;j++){
		for(int i=1;i<=F;i++){
			cnt[j]+=e[j][mmap[i]];
		}
	}
 	double min_l=0x3fffffff;
	int flag=0;
	for(int i=1;i<=P;i++){
		if(min_l>cnt[i]){
			min_l=cnt[i];
			flag=i;
		}
	}
	cout<<flag;
	return 0;
}
2025/1/17 14:36
加载中...