HDU2544(Dijkstra优先队列优化版)
来源:互联网 发布:全职猎人 知乎 编辑:程序博客网 时间:2024/06/03 10:54
虽然没有怎么看懂,时间复杂度从n的平方到了mlogn,应该还可以继续优化,抛掉已经访问的点,我还没想明白。
#include<iostream>using namespace std;#include<queue>#include<vector>const int Ni = 10010;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 (cin >> n >> m&&n + m) { int s, e; for (int i = 0; i <= n; i++) eg[i].clear(); while (m--) { cin >> a >> b >> d; eg[a].push_back(node(b, d)); eg[b].push_back(node(a, d)); } dijkstra(1); cout << dis[n] << endl; } return 0;}
阅读全文
0 0
- HDU2544(Dijkstra优先队列优化版)
- hdu2544 最短路(dijkstra/优先队列)
- hdu2544 最短路 dijkstra的使用优先队列优化的比较
- 优先队列优化 dijkstra
- Dijkstra(优先队列优化)
- Dijkstra优先队列优化
- 最短路&&优先队列优化->HDU2544
- 优先队列优化Dijkstra算法
- dijkstra+优先队列优化 模板
- dijkstra的优先队列优化
- 优先队列优化Dijkstra-hdu2066
- Dijkstra算法优先队列优化
- 优先队列优化Dijkstra算法
- PriorityQueue+Dijkstra优先队列优化的Dijkstra
- 优先队列优化的Dijkstra算法
- hdu 2680 dijkstra 使用优先队列优化
- 堆(优先队列)优化dijkstra(邻接矩阵)
- dijkstra算法模板(优先队列优化)
- Github 创建新分支
- ActiveMQ—Queue与Topic区别
- 字符串中替换空格
- JS 作用域
- 在Solr中配置和使用ansj分词
- HDU2544(Dijkstra优先队列优化版)
- http404问题
- redis和memcache区别
- ubuntu php7.1安装zip扩展
- 一个关于补码的有趣的例子
- spring------------文件资源操作和 Web 相关工具类
- 格雷码与二进制的转换
- 打电话和发短信
- 从零开始搭建环境编写操作系统 AT&T GCC (二)从实模式到保护模式