标签:
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define INF 0x3f3f3f3f //四个3F,少一个就超时 using namespace std; int s[1001]; int e[1001]; int map[1001][1001]; int main() { int S,T,D,N; int a,b,c; while(~scanf("%d%d%d",&T,&S,&D)) { memset(map,INF,sizeof(map)); N = 0; for(int i=1;i<=T;i++) { scanf("%d%d%d",&a,&b,&c); map[a][b] = min(map[a][b],c); map[b][a] = min(map[a][b],c); N = max(N,max(a,b)); map[i][i] = 0;//you hua } for(int i=1;i<=S;i++) { scanf("%d",&s[i]); } for(int i=1;i<=D;i++) { scanf("%d",&e[i]); } for(int k=1;k<=N;k++) for(int i=1;i<=N;i++) { if(map[k][i]!=INF) { for(int j=1;j<=N;j++) { map[i][j] = min(map[i][j],map[i][k]+map[k][j]); } } } int minx=INF; for(int i=1;i<=S;i++) for(int j=1;j<=D;j++) { minx = min(map[s[i]][e[j]],minx); } printf("%d\n",minx); } return 0; }
标签:
原文地址:http://www.cnblogs.com/valar/p/4748647.html