次短路
来源:互联网 发布:nginx 转发真实ip 编辑:程序博客网 时间:2024/04/29 04:32
模板题:http://poj.org/problem?id=3255
和用堆实现的Dijkstra差不多
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<map>#include<vector>#define maxn 5005using namespace std;typedef pair<int, int> P;const int inf = 1000000000;int n, m;bool vis[maxn];int d[maxn][2];struct edge{ int to; int cost;};vector<edge> M[maxn];void dijkstra(int s = 1){ for(int i = 1; i <= n; i++) { d[i][0] = d[i][1] = inf; vis[i] = 0; } d[s][0] = 0; priority_queue<P, vector<P>, greater<P>> PQ; PQ.push(make_pair(0, s)); while(!PQ.empty()) { P cur = PQ.top(); PQ.pop(); int v = cur.second; int dis = cur.first; if(d[v][1] < dis) continue; for(int i = 0; i < M[v].size(); i++) { edge e = M[v][i]; int u = e.to; int cost = e.cost + dis; if(d[u][0] > cost) { swap(d[u][0], cost); PQ.push(make_pair(d[u][0], u)); } if(d[u][1] > cost && d[u][0] < cost) { d[u][1] = cost; PQ.push(make_pair(d[u][1], u)); } } } cout << d[n][1] << endl;}int main(){ cin >> n >> m; for(int i = 0; i < maxn; i++) M[i].clear(); for(int i = 0; i < 2 * m; i += 2) { int u, v, c; scanf("%d%d%d", &u, &v, &c); edge tmp; tmp.to = v; tmp.cost = c; M[u].push_back(tmp); tmp.to = u; tmp.cost = c; M[v].push_back(tmp); } dijkstra(); return 0;}
阅读全文
0 0
- 次短路
- 次短路
- 次短路
- 次短路
- 次短路
- 次短路
- 最短路 & 次短路
- poj3463 最短路+次短路
- 最短路及次短路
- 次短路与k短路
- hdu 3191 次短路
- POJ 3225 次短路
- 【次短路】赛跑
- 次短路--poj3255
- POJ3255 Roadblocks , 次短路
- POJ3255 Roadblocks(次短路)
- poj 3255(次短路)
- 次短路问题
- Mysqli实现的注册登录后台代码
- 图像识别与处理之Opencv——识别直线与圆形(对应棋盘棋子)11月1日暂存
- 《集体智慧编中文版》读书笔记——第三章:发现群组
- 60. Permutation Sequence
- 设计模式--适配器模式
- 次短路
- 从零基础认识ssm
- 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- The Summary of Yanyan's Blog
- 洛谷题解
- Oracle之分区和优化总结
- Python高级可视化库seaborn回归分析(基础整理)
- UVA11426 FZU1969 51NOD1188 线性欧拉筛法+筛法
- JSF2.X入门