Problem Description
在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?

Input
输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工作人员需要C分钟的时间走过这条路。
输入保证至少存在1条商店到赛场的路线。

Output
对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间

Sample Input

2 1
1 2 3
3 3
1 2 5
2 3 5
3 1 2
0 0

Sample Output

3
2

解题思路:
dijkstra单源最短路径算法就ok了!!!

代码如下:

#include <iostream>
#include <queue>
#include <vector>
#include <string>
using namespace std;
const int INF = 1 << 30;
const int N = 110;
int dis[N];
bool done[N];
int n, m;struct edge {int from;int to;int w;
};struct node {int id;int dis;friend bool operator<(const node &a, const node &b) {return a.dis > b.dis;}
};vector<edge>e[N];void dijkstra() {priority_queue<node>q;int s = 1;for (int i = 1; i <= n; i++)dis[i] = INF;memset(done, 0, sizeof(done));dis[s] = 0;q.push({s, dis[s]});while (q.size()) {node t = q.top();q.pop();if (done[t.id])continue;done[t.id] = true;for (int i = 0; i < e[t.id].size(); i++) {edge y = e[t.id][i];if (done[y.to])continue;if (dis[y.to] > y.w + t.dis) {dis[y.to] = y.w + t.dis;q.push({y.to, dis[y.to]});}}}cout << dis[n] << endl;
}int main() {while (cin >> n >> m, n, m) {for (int i = 1; i <= n; i++)e[i].clear();while (m--) {int a, b, c;cin >> a >> b >> c;e[a].push_back({a, b, c});e[b].push_back({b, a, c});}dijkstra();}return 0;
}

hdu2544 最短路-邻接表+优先队列实现dijkstra相关推荐

  1. 最短路径Dijkstra(静态邻接表+优先队列模板)+ 记忆化搜索

    这道题的解题步骤是这样的: (1)用Dijkstra求出每个点到house(也就是2号点)的最短距离,我是记录在数组dist[]中: (2)我们要求的是office(1号点)到house(或2--&g ...

  2. 迷阵突围 (dijkstra求次短路)邻接表,邻接矩阵

    分析:dijkstra算法求最短路问题.先求最短路,再依次删除最短路上的边,每次删除一条,使用dijkstra求此时的最短路,更新最小值,最后得到第二短路.f标记删除与否,抑或便于寻找无向图的两条边. ...

  3. dijkstra--非负权值的单源最短路径STL实现(邻接表+优先队列) (带路径)

    一.预备知识: 用优先队列做大小根堆 注意:是非负权值的单源最短路径的STL实现,权值是负的不能用dijkstra算法 解释在第一段 二.代码: #include<iostream> #i ...

  4. ROADS POJ - 1724(最短路+邻接表+dfs)

    题意: N个城市,编号1到N.城市间有R条单向道路.有长度和过路费两个属性.Bob只有K块钱,他想从城市1走到城市N.问最短共需要走多长的路.如果到不了N,输出-1. 题目: N cities nam ...

  5. C++实现dijkstra单源最短路径算法-邻接表+优先队列

    dijkstra单源最短路径算法不允许边权值为负,适用的图范围可以很大. 代码如下: #include <iostream> #include <queue> #include ...

  6. vector邻接表建图+dijkstra模板

    本文节点的编号从0开始计算 思路 dijkstra伪算法(未优化)源点到自己的距离为0,其余点到源点的距离为无穷大 记录当前节点now为源点s 循环下面的步骤V次,V是结点的个数now标记已访问遍历n ...

  7. dijkstra邻接表_掌握算法-图论-最短路径算法-Dijkstra算法

    如果图是赋权图,那么问题就变得更困难了不过我们仍然可以使用来自无权情形时的想法. 我们保留所有与前面相同的信息.因此,每个顶点或者标记为Known的,或者标记为Unknown的.像之前一样,对每一个顶 ...

  8. 最短路算法详解(Dijkstra/SPFA/Floyd)

    转自:http://blog.csdn.net/murmured/article/details/19281031 一.Dijkstra Dijkstra单源最短路算法,即计算从起点出发到每个点的最短 ...

  9. dijkstra邻接表_[力扣743] 带权邻接表的单源最短路

    题目链接 743. 网络延迟时间 题目描述 有 N 个网络节点,标记为 1 到 N. 给定一个列表 times,表示信号经过有向边的传递时间. times[i] = (u, v, w),其中 u 是源 ...

最新文章

  1. gb50268-2008给水排水管道施工及验收规范_20135城市非开挖管道施工质量检查与验收(夯管·定向钻·顶管)...
  2. 微信公众号 模版消息 跳转到小程序报错{ errcode: 40013, errmsg: 'invalid appid hint: [cC6RwA09011295]' }
  3. JAVA类 与类文件
  4. abap视图字段限制_【第八章】视图
  5. 案例:手动输入一个字符串,打散放进一个列表,小写字母反序 大写字母保持不变...
  6. 每日一题/012/数学分析/求极限/拉格拉日中值定理/幂指函数求导
  7. DelphiXe Ansistring使用注意事项
  8. 2018美赛B题总结
  9. 再别极域(亲测有效)
  10. equal和==的区别
  11. 作宾语,不定式与动名词的区别——脑动词和手动词
  12. 你关心的问题都在这!爱奇艺用户留存预测挑战赛Baseline上线
  13. SpringCloud与微服务Ⅴ --- Eureka服务注册与发现
  14. Linux系统修复网络,Linux系统无法上网解决方案教程
  15. 【2020 ACM Fellow 华人学者】 任奎 浙江大学
  16. 长城信息IPO过会:年营收13.4亿 中国电子控制77%股权
  17. 常见电平类型:TTL电平,CMOS电平,232/485电平,OC门,OD门
  18. 【期末复习】电子商务(南邮考后总结版)
  19. 别再吐槽 notebook!分享4个解决版本控制的高效工具!
  20. springbbot运行无法编译成功,找不到jar包报错:Error:(3, 46) java: 程序包org.springframework.context.annotation不存在

热门文章

  1. 【ArcGIS风暴】水文分析模块实验:山脊线和山谷线提取
  2. JavaScript读取本地图片到浏览器
  3. C#使用ServiceController控制windows服务
  4. Android studio提示Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
  5. C语言试题六十七之请编写函数实现水仙花数
  6. Android之解决Android10.0通过热点名字和密码连接指定热点网络不能通信问题(2种解决办法)
  7. linux之学习linux系统相关的书籍
  8. Android之Android studio基本调试和快捷键
  9. python数字从大到小排列_Python练习题 005:三个数字由大到小排序输出
  10. 听说你趁我不在家,欺负我老婆?