比赛 2025.6.2 评测结果 WWEEEEEEEEEE
题目名称 旅行者 最终得分 0
用户昵称 李奇文 运行时间 1.795 s
代码语言 C++ 内存使用 7.38 MiB
提交时间 2025-06-02 12:17:47
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int t;
int n,m,k;
int dis[N][N],a[N][N];
bool vis[N];
int in[N];
void dijkstra(int s){
  	for(int j=1;j<=n;j++){
	  	dis[s][j]=0x3f;
	}
  	memset(vis,0,sizeof(vis));
  	dis[s][s]=0;
  	for(int i=1;i<=n;i++){
    	int x=0,mind=0x3f3f3f3f;
    	for(int j=1;j<=n;j++){
    	 if(!vis[j]&&(x==0||dis[s][j]<dis[s][x])) x=j;   		
		}
		vis[x]=true;
    	for(int j=1;j<=n;j++){
    		dis[s][j]=min(dis[s][j],dis[s][x]+a[x][j]);
    	}
  	}
}
void solve(){
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=m;i++){
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		a[x][y]=z;
	}
	for(int i=1;i<=k;i++){
		scanf("%d",&in[i]);
	}
	for(int i=1;i<=k;i++){
		dijkstra(in[i]);
	}
	int minn=0x3f3f3f3f;
	for(int i=1;i<=k;i++){
		for(int j=1;j<=k;j++){
			if(i==j) continue;
			minn=min(minn,min(dis[in[i]][in[j]],dis[in[j]][in[i]]));
		}
	}
	printf("%d\n",minn);
}
int main(){
	freopen("WAW.in","r",stdin);
	freopen("WAW.out","w",stdout);
	scanf("%d",&t);
	while(t--){
		solve();
	}
	return 0;
}