题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=115

本题求单源最短路,这里有个技巧,因为源点不一,这时我们可以设置一个“超级源点”,即数组下标为0的点,这是只要该点到真正源点的距离为0就可以了。

下面是AC代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #define INF 1000000000
 5 int map[1005][1005],flag[1005],dis[1005];
 6 int n;
 7
 8 int min(int a,int b) {return a<b?a:b;}
 9 void dijkstra()
10 {
11     int i,j,k,m;
12     memset(flag,0,sizeof(flag));
13     for(i=1;i<=n;i++)
14         dis[i]=map[0][i];
15     flag[0]=1;
16     dis[0]=0;
17     for(i=1;i<=n;i++)
18     {
19         m=INF;
20         for(j=1;j<=n;j++)
21         {
22             if(!flag[j]&&dis[j]<m)
23             {
24                 m=dis[j];
25                 k=j;
26             }
27         }
28         flag[k]=1;
29         for(j=0;j<=n;j++)
30         {
31             if(!flag[j]&&dis[j]>dis[k]+map[k][j])
32                 dis[j]=dis[k]+map[k][j];
33         }
34     }
35 }
36 int main()
37 {
38     int i,j,T,x,m,p,u,v,w,t;
39     scanf("%d",&T);
40     while(T--)
41     {
42         scanf("%d%d%d%d",&x,&n,&m,&p);
43         for(i=0;i<=n;i++)
44             for(j=0;j<=n;j++)
45                 map[i][j]=INF;
46         for(i=1;i<=x;i++)
47         {
48             scanf("%d",&t);
49             map[0][t]=0;
50             map[t][0]=0;
51         }
52         for(i=1;i<=m;i++)
53         {
54             scanf("%d%d%d",&u,&v,&w);
55             map[u][v]=min(map[u][v],w);
56             map[v][u]=map[u][v];
57         }
58         dijkstra();
59         printf("%d\n",dis[p]);
60     }
61     return 0;
62 }

转载于:https://www.cnblogs.com/hjf007/p/3317680.html

城市平乱 (dijkstra模板题)相关推荐

  1. NYOJ 115 城市平乱(图论Dijkstra)

    城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别 ...

  2. 图论南阳155题 城市平乱

    思路:刚开始用了佛洛伊德算法,没想到超时了.后来改用多次迪杰斯特算法就过了. 迪杰斯特算法是求出源点到其余点的最短距离 这里是求出队伍到危险去的距离然后找出最小的那个然后输出就ok了,注意他说两个城市 ...

  3. NYOJ 115 城市平乱

    城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别 ...

  4. NYOJ 115 城市平乱

    描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M. 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都 ...

  5. HDU 2544最短路dijkstra模板题

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  6. Dijkstra模板题——单源最短路径(洛谷 P3371)

    题目选自洛谷P3371 这个数据类型可以将两个数据进行打包,比如 pair<int,int> 就是将两个int型进行打包. 而且使用优先队列时,优先队列会根据你打包的第一个数据进行排序. ...

  7. POJ 1511 Invitation Cards(最短路径,dijkstra 模板题)

    题目意思: 在有向图中,求1到所有点的最短路之和 + 所有点到1的最短路之和. 本题要点: 1.先求1点 到其他点的单源最短路径 d[i](1 <= i <= n), 用 dijkstra ...

  8. POJ-2387:Dijkstra模板题

    题目链接 AC代码: #include <stdio.h> #include <string.h> #include <string> #include <i ...

  9. 【dijkstra模板】旅游规划 (25 分)

    立志用最少的代码做最高效的表达 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...

最新文章

  1. golang 中的 init 和 main函数
  2. linux引数列项目过长,Linux 命令个人总结====== 未完待续 个人认为比较重要
  3. 【TensorFlow】笔记5:图像数据处理
  4. c++关联容器的成员函数find的一个例子
  5. [转] 理解SVG transform坐标变换
  6. 2018年最具就业前景的7大编程语言:Java、Python、JavaScript、C++、C#、PHP、Perl ......
  7. 深度学习(6)TensorFlow基础操作二: 创建Tensor
  8. 周末生活日记|我们和楠哥
  9. Vue 过渡效果的组件
  10. Nifi 怀疑出个bug 流程中的实时数据结果痕迹没有不是实时的,是之前的。以及相应解决办法。
  11. CE+OD无法附加游戏进程的破解方法 来吧 别在为这烦恼了
  12. pt-query-digest分析mysql日志
  13. Java - 调用 echarts 提供的地图压缩方法压缩地图
  14. 【图像分类】ResNet网络结构
  15. 9011,9012,9013,9014,8050,8550 三极管的区别
  16. Linux下安装SVN服务(CentOS7下)单仓库版(老威改良版)
  17. 前国际奥委会主席罗格去世,敬生命!这些残奥特写太戳了
  18. 可靠的运输层协议,如何抵抗“剪网线”的降维打击?(rdt协议的的总结与思考)
  19. 计嵌 廖峻 20178303040 C++作业
  20. ESXi 镜像添加驱动

热门文章

  1. .net mysql limit 分页原理_浅谈MySQL分页Limit的性能问题
  2. linux安装redis清除错误,关于linux redis安装及安装遇到的问题
  3. redux解决了什么问题?
  4. I/O多路复用技术是什么?
  5. v8的垃圾回收机制(二)
  6. /plus/recommend.php sql注入漏洞,DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 -
  7. 香港科技大学计算机专业国内就业6,香港科技大学就业好吗?
  8. java冒泡法优化_数据结构java版之冒泡排序及优化
  9. php+mysql开发实战 pdf_《PHP + MySQL 开发实战》怎么样_目录_pdf在线阅读 - 课课家教育...
  10. python建模 决策_决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:...