hdu 2544 最短路(模板)
来源:互联网 发布:php exec 返回值为空 编辑:程序博客网 时间:2024/06/10 13:44
题目:http://acm.split.hdu.edu.cn/showproblem.php?pid=2544
/*Dijkstra的算法思想:在所有没有访问过的结点中选出dis(s,x)值最小的x对从x出发的所有边(x,y),更新dis(s,y)=min(dis(s,y),dis(s,x)+dis(x,y))*/#include <iostream>#include <cstdio>#include <queue>#include <vector>using namespace std;const int Ni = 10000;const int INF = 1<<27;struct node{ int x,d; node(){} node(int a,int b){x=a;d=b;} bool operator < (const node & a) const { if(d==a.d) return x<a.x; else return d > a.d; }};vector<node> eg[Ni];int dis[Ni],n;void Dijkstra(int s){ int i; for(i=0;i<=n;i++) dis[i]=INF; dis[s]=0; //用优先队列优化 priority_queue<node> q; q.push(node(s,dis[s])); while(!q.empty()) { node x=q.top();q.pop(); for(i=0;i<eg[x.x].size();i++) { node y=eg[x.x][i]; if(dis[y.x]>x.d+y.d) { dis[y.x]=x.d+y.d; q.push(node(y.x,dis[y.x])); } } }}int main(){ int a,b,d,m; while(scanf("%d%d",&n,&m),n+m) { for(int i=0;i<=n;i++) eg[i].clear(); while(m--) { scanf("%d%d%d",&a,&b,&d); eg[a].push_back(node(b,d)); eg[b].push_back(node(a,d)); } Dijkstra(1); printf("%d\n",dis[n]); } return 0;}
阅读全文
0 0
- hdu 2544 最短路(Dijkstra模板)
- HDU 2544 最短路(模板题)
- hdu 2544 最短路(模板)
- 【最短路模板】HDU 2544
- HDU-2544-最短路-模板
- HDU 2544 最短路 【最短路入门模板题】
- hdu 2544 (最短路 Dijkstra模板题)
- HDU 2544最短路dijkstra模板题
- Hdu 2544 最短路 模板题
- HDU 2544 最短路 (弗洛伊德模板)
- hdu 2544 最短路 spfa模板题
- HDU 2544 最短路 (模板题)
- HDU-2544 最短路(Dijkstra算法求无向图最短路模板题)
- 最短路径(最基础,经典的模板和思想):HDU-2544最短路
- hdu 3790 最短路模板
- HDU 2544 最短路 (单源最短路)
- 最短路 (HDU 2544)
- hdu 2544(最短路)
- Markdown 语法之typora设置中文字体篇
- jsp servlet 简单总结
- java基本类
- bzoj 4987: Tree 树形dp
- Babellua
- hdu 2544 最短路(模板)
- 【java核心技术笔记】接口与内部类
- JavaWeb-Servlet2-Method
- 九度OJ题目1144:Freckles
- nyoj199 无线覆盖问题
- ERROR 1045 (28000)及ERROR 1054 (42S22)的解决方法
- Java基础部分第十五节
- 模板:Dijkstra 队列优化
- dubbo相关(一) zookeeper安装与启动