Roadblocks (次短路)(Dijkstra应用)
来源:互联网 发布:大数据适合学什么专业 编辑:程序博客网 时间:2024/06/06 01:24
到某个顶点的次短路要么是到其他某个顶点u的最短路加上u->v的边,或者是到u的次短路加上u->v
#include<stdio.h>#include<iostream>#include<vector>using namespace std;#include<algorithm>#include<string.h>#include<algorithm>#include<queue>#define maxn 5010const int INF = 1000000000;int N,R;//顶点数,边数int dis[maxn],dis2[maxn];struct edge{ int to,cost; edge() {} edge(int x,int y) { to=x;cost=y; }};typedef pair<int ,int>P;vector<edge>G[maxn];int dist[maxn];int dist2[maxn];void dijkstra(int s) { priority_queue<P,vector<P>,greater<P> >que; for(int i=0;i<=N;i++) dist[i]=INF; for(int i=0;i<=N;i++) dist2[i]=INF; dist[s]=0; que.push(P(0,s)); while(!que.empty()) { P p=que.top(); que.pop(); int v=p.second, d=p.first; if(dist2[v]<d) continue; //v的次短距离比d还小 for(int i=0;i<G[v].size();++i) { edge e=G[v][i]; //cout<<e.to<<endl; int d2=d+e.cost; if(dist[e.to]>d2) { //更新 最短距离 swap(dist[e.to],d2); que.push(P(dist[e.to],e.to)); } if(dist2[e.to]>d2&&dist[e.to]<d2) { //更新次短距离 dist2[e.to]=d2; //cout<<d2<<endl; que.push(P(dist2[e.to],e.to)); } } } printf("%d\n",dist2[N]);}int main(){ int a,b,c; scanf("%d%d",&N,&R); for(int i=0;i<R;++i) { scanf("%d%d%d",&a,&b,&c); G[a].push_back(edge(b,c)); G[b].push_back(edge(a,c)); } dijkstra(1); return 0;}
附Dijkstra算法
struct edge{ int to,cost;};int V;vector<edge>G[maxn];int d[maxn];void dijkstra(int s){ priority_queue<P,vector<P>,greater<P> >; fill(d,d+V,INF); d[s]=0; que.push(P(0,s)); while(!que.empty()) { P p=que.top();que.pop(); int v=p.second; if(d[v]<p.first) continue; for(int i=0;i<G[i].size();i++) { edge e=G[v][i]; if(d[e.to]>d[v]+e.cost) { d[e.to]=d[v]+e.cost; que.push(P(d[e.to],e.to)); } } }}
0 0
- Roadblocks (次短路)(Dijkstra应用)
- Roadblocks(次短路-dijkstra算法)
- POJ 3255 Roadblocks (Dijkstra求次短路)
- POJ 3255 RoadBlocks(次短路+dijkstra变形)
- poj 3255 Roadblocks Dijkstra求次短路
- POJ3255 Roadblocks 次短路Dijkstra做法
- POJ3255-Roadblocks-dijkstra求次短路
- [POJ 3255]Roadblocks[dijkstra][次短路]
- poj 3255 Roadblocks (次短路+dijkstra)
- poj3255 Roadblocks (次短路)
- POJ 3255 Roadblocks(dijkstra+邻接表求解次短路问题)
- POJ 3255-Roadblocks [次短路 Dijkstra] 《挑战程序设计竞赛》2.5
- POJ 3255 Roadblocks(次短路,Dijkstra变形+邻接表存储)
- POJ 3255 Roadblocks (dijkstra最短路)
- poj Roadblocks 次短路(数据较大)
- POJ 题目3255Roadblocks(次短路)
- POJ 3255 Roadblocks(次短路)
- POJ 3255 Roadblocks(次短路)
- 对象序列化和反序列化
- 开发过程中dubbo 实体序列化问题
- python 细节 -- init相关
- 2D绘图文字
- bootstrap table父子表
- Roadblocks (次短路)(Dijkstra应用)
- guzzle中文文档
- 高级碰撞检测技术
- 检测内核对象泄露
- java 字符串详解
- Eclipse 背景颜色设置
- Java堆.栈和常量池 复习
- [实测有用]Qt5.4下连接Mysql,QSqlDatabase: QMYSQL driver not loaded but available
- Spring核心之BeanFactory 一张图看懂getBean全过程