提交时间:2024-06-01 15:35:10

运行 ID: 150104

#include<iostream> using namespace std; const int N = 810, inf = 1e8; int g[N][N], n, p, c, pl[N], a, b, d; int main(){ for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ g[i][j] = inf; } g[i][i] = 0; } cin >> n >> p >> c; for(int i = 0; i < n; i++) cin >> pl[i]; for(int i = 0; i < c; i++){ cin >> a >> b >> d; g[a][b] = d; g[b][a] = d; } for(int k = 1; k <= p; k++){ for(int i = 1; i <= p; i++){ for(int j = 1; j <= p; j++){ g[i][j] = min(g[i][j], g[i][k] + g[k][j]); } } } int cnt = 0, zc = 1e9; for(int i = 1; i <= p; i++){ cnt = 0; for(int j = 0; j < n; j++){ cnt += g[i][pl[j]]; } if(cnt < zc) zc = cnt; } cout << zc; return 0; }