HDU 2066最短路径Dijkstra

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 2066最短路径Dijkstra相关的知识,希望对你有一定的参考价值。

思路:枚举所有起点城市然后比较每个起点所去喜欢城市的最小距离

 

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<cstring>
 4 const int qq=1000+10;
 5 const int MAX=1e7;
 6 int s[qq],e[qq];
 7 int dist[qq];
 8 int vis[qq],tar[qq];
 9 int city[qq][qq];
10 int t,a,b;
11 void Dijkstra()
12 {
13     int poor=MAX;
14     for(int l=1;l<=a;++l){
15         int tot=MAX;
16         for(int i=1;i<qq;++i){
17             vis[i]=0;
18             dist[i]=city[s[l]][i];
19         }
20         vis[s[l]]=1;
21         for(int i=1;i<qq;++i){
22             int minx=MAX;
23             int u=s[l];
24             for(int j=1;j<qq;++j)
25                 if(!vis[j] && dist[j] < minx)
26                     minx=dist[u=j];
27             if(minx==MAX)    break;
28             vis[u]=1;
29             if(tar[u]!=0){
30                 tot=dist[u];
31                 break;
32             }
33             for(int j=1;j<qq;++j)
34                 if(!vis[j] && city[u][j] < MAX)
35                     if(dist[u]+city[u][j]<dist[j])
36                         dist[j] = dist[u] + city[u][j];        
37         }
38         if(tot<poor)
39             poor=tot;
40     }
41     printf("%d\n",poor);
42 }
43 int main()
44 {
45     while(scanf("%d %d %d",&t,&a,&b)!=EOF){
46         for(int j,i=1;i<qq;++i)
47             for(j=1;j<qq;++j)
48                 city[i][j]=MAX;
49         for(int i=1;i<=t;++i){
50             int x,y,cost;
51             scanf("%d %d %d",&x,&y,&cost);
52             if(cost<city[x][y])
53                 city[x][y]=city[y][x]=cost;
54         }
55         for(int i=1;i<=a;++i)
56             scanf("%d",&s[i]);
57         memset(tar,0,sizeof(tar));
58         for(int i=1;i<=b;++i){
59             int ans;scanf("%d",&ans);
60             tar[ans]=1;
61         }
62         Dijkstra();
63     }
64 }

 

以上是关于HDU 2066最短路径Dijkstra的主要内容,如果未能解决你的问题,请参考以下文章

HDU2066一个人的旅行---(多起点多终点最短路径)

HDU 3790 最短路径问题 (dijkstra)

#HDU 3790 最短路径问题 Dijkstra入门题

HDU 3790 最短路径问题(Dijkstra 迪杰斯特法最短路径算法)

HDU - 3790 最短路径问题(Dijkstra+优先队列优化)

HDU 3790 最短路径问题 (最短路)