比赛 NOIP2023模拟赛2 评测结果 TTEEEEEEEE
题目名称 旅行者 最终得分 0
用户昵称 黄天宇 运行时间 9.393 s
代码语言 C++ 内存使用 494.67 MiB
提交时间 2023-11-14 09:58:58
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n,m;
long long dp[8005][8005];
int p;
int q;
int s[10005];
long long minx;
void floyed(){
    for(int k=1;k<=n;k++){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(i==j||i==k||j==k) continue;
                dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
            }
        }
    }
}
int main(){
    freopen("WAW.in","r",stdin);
    freopen("WAW.out","w",stdout);
    cin>>p;
    while(p--){
        minx=0x7fffff;
        memset(dp,0x3f,sizeof(dp));
        memset(s,0,sizeof(s));
        cin>>n>>m>>q;
        for(int i=1;i<=m;i++){
            int x,y;
            long long w;
            cin>>x>>y>>w;
            dp[x][y]=min(dp[x][y],w);
        }
        floyed();
        for(int i=1;i<=q;i++){
            cin>>s[i];
        }
        for(int i=1;i<=q;i++){
            for(int j=1;j<=q;j++){
                if(i==j) continue;
                minx=min(dp[s[i]][s[j]],minx);
            }
        }
        cout<<minx<<endl;
    }
    return 0;
}