城市平乱 (dijkstra模板题)
题目链接: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模板题)相关推荐
- NYOJ 115 城市平乱(图论Dijkstra)
城市平乱 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别 ...
- 图论南阳155题 城市平乱
思路:刚开始用了佛洛伊德算法,没想到超时了.后来改用多次迪杰斯特算法就过了. 迪杰斯特算法是求出源点到其余点的最短距离 这里是求出队伍到危险去的距离然后找出最小的那个然后输出就ok了,注意他说两个城市 ...
- NYOJ 115 城市平乱
城市平乱 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别 ...
- NYOJ 115 城市平乱
描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M. 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都 ...
- HDU 2544最短路dijkstra模板题
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- Dijkstra模板题——单源最短路径(洛谷 P3371)
题目选自洛谷P3371 这个数据类型可以将两个数据进行打包,比如 pair<int,int> 就是将两个int型进行打包. 而且使用优先队列时,优先队列会根据你打包的第一个数据进行排序. ...
- POJ 1511 Invitation Cards(最短路径,dijkstra 模板题)
题目意思: 在有向图中,求1到所有点的最短路之和 + 所有点到1的最短路之和. 本题要点: 1.先求1点 到其他点的单源最短路径 d[i](1 <= i <= n), 用 dijkstra ...
- POJ-2387:Dijkstra模板题
题目链接 AC代码: #include <stdio.h> #include <string.h> #include <string> #include <i ...
- 【dijkstra模板】旅游规划 (25 分)
立志用最少的代码做最高效的表达 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...
最新文章
- golang 中的 init 和 main函数
- linux引数列项目过长,Linux 命令个人总结====== 未完待续 个人认为比较重要
- 【TensorFlow】笔记5:图像数据处理
- c++关联容器的成员函数find的一个例子
- [转] 理解SVG transform坐标变换
- 2018年最具就业前景的7大编程语言:Java、Python、JavaScript、C++、C#、PHP、Perl ......
- 深度学习(6)TensorFlow基础操作二: 创建Tensor
- 周末生活日记|我们和楠哥
- Vue 过渡效果的组件
- Nifi 怀疑出个bug 流程中的实时数据结果痕迹没有不是实时的,是之前的。以及相应解决办法。
- CE+OD无法附加游戏进程的破解方法 来吧 别在为这烦恼了
- pt-query-digest分析mysql日志
- Java - 调用 echarts 提供的地图压缩方法压缩地图
- 【图像分类】ResNet网络结构
- 9011,9012,9013,9014,8050,8550 三极管的区别
- Linux下安装SVN服务(CentOS7下)单仓库版(老威改良版)
- 前国际奥委会主席罗格去世,敬生命!这些残奥特写太戳了
- 可靠的运输层协议,如何抵抗“剪网线”的降维打击?(rdt协议的的总结与思考)
- 计嵌 廖峻 20178303040 C++作业
- ESXi 镜像添加驱动
热门文章
- .net mysql limit 分页原理_浅谈MySQL分页Limit的性能问题
- linux安装redis清除错误,关于linux redis安装及安装遇到的问题
- redux解决了什么问题?
- I/O多路复用技术是什么?
- v8的垃圾回收机制(二)
- /plus/recommend.php sql注入漏洞,DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 -
- 香港科技大学计算机专业国内就业6,香港科技大学就业好吗?
- java冒泡法优化_数据结构java版之冒泡排序及优化
- php+mysql开发实战 pdf_《PHP + MySQL 开发实战》怎么样_目录_pdf在线阅读 - 课课家教育...
- python建模 决策_决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:...