标签:des style color java os io strong 数据
6 2 3 1 3 5 1 4 7 2 8 12 3 8 4 4 9 12 9 10 2 1 2 8 9 10
9
#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <cctype> #include <cmath> #include <cstdlib> #include <vector> #include <queue> #include <set> #include <map> #include <list> using namespace std; const int INF=1<<27; const int maxn=1e4; typedef struct node { int u,c; node (int a,int b){u=a;c=b;} friend bool operator <(node a,node b) { if(a.c!=b.c) return a.c<b.c; return a.u<b.u; } }; vector <node> eg[maxn]; int T,S,D; int s[maxn],e[maxn],dis[maxn]; void Dijkstra(int src) { for(int i=0;i<1010;i++) dis[i]=INF; dis[src]=0; priority_queue <node> Q; Q.push(node(src,dis[src])); while(!Q.empty()) { node v=Q.top();Q.pop(); for(int i=0;i<eg[v.u].size();i++) { node t=eg[v.u][i]; if(dis[t.u]>t.c+v.c) { dis[t.u]=t.c+v.c; Q.push(node(t.u,dis[t.u])); } } } } int main() { int u,v,c; while(cin>>T>>S>>D) { for(int i=0;i<=1010;i++) eg[i].clear(); while(T--) { cin>>u>>v>>c; eg[u].push_back(node(v,c)); eg[v].push_back(node(u,c)); } for(int i=0;i<S;i++) cin>>s[i]; for(int i=0;i<D;i++) cin>>e[i]; int Min=INF; for(int i=0;i<S;i++) { Dijkstra(s[i]); for(int j=0;j<D;j++) { if(Min>dis[e[j]]) Min=dis[e[j]]; } } cout<<Min<<endl; } return 0; }
HDU 2066-一个人的旅行(最短路Dijkstra),布布扣,bubuko.com
标签:des style color java os io strong 数据
原文地址:http://blog.csdn.net/qq_16255321/article/details/38677873