Coderforces 20C 最短路记录路径
来源:互联网 发布:勿谓言之不预也 知乎 编辑:程序博客网 时间:2024/06/08 17:03
题意:给定一个带权无向图。你需要求出从点 1 到点 n的最短路。
思路:使用Dijkstra算法,当进行松弛操作时用数组记录下前缀,输出时先从n向1回溯记录再输出;
#include<iostream>#include<algorithm>#include<string>#include<cstring>#include<map>#include<queue>#include<cmath>#include<stack>#include<vector>#include<cstdio>#define MAXN 33000#define INF 0x3f3f3f3f#define lmid l,m,rt<<1#define rmid m+1,r,rt<<1|1#define ls rt<<1#define rs rt<<1|1#define Mod 1000000007#define i64 __int64#define LIMIT_ULL 100000000000000000using namespace std;typedef pair<long long,int>P;struct node{ int v,w; int next;}s[200005];int head[100005];int cnt=1;void add(int u,int v,int w){ s[cnt].v=v; s[cnt].w=w; s[cnt].next=head[u]; head[u]=cnt++;}long long dj[100005];int lj[100005];int jl[100005];int n,m;void djstl(int pos){ lj[pos]=pos; fill(dj+1,dj+n+1,100000000000); dj[pos]=0; priority_queue<P,vector<P>,greater<P>>q; q.push(P(0,pos)); node e; while(!q.empty()) { P p=q.top(); q.pop(); int v=p.second; if(p.first>dj[v]) continue; for(int i=head[v];~i;i=s[i].next) { e=s[i]; if(dj[e.v]>dj[v]+e.w) { lj[e.v]=v; dj[e.v]=dj[v]+e.w; q.push(P(dj[e.v],e.v)); } } }}int main(){ scanf("%d%d",&n,&m); memset(head,-1,sizeof(head)); for(int i=0;i<m;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); add(a,b,c); add(b,a,c); } djstl(1); if(dj[n]==100000000000) cout<<-1<<endl; else { int len=0; int k=n; while(lj[k]!=1) { jl[len++]=lj[k]; k=lj[k]; } jl[len++]=lj[k]; for(int i=len-1;i>=0;i--) { cout<<jl[i]<<" "; } cout<<n<<endl; } return 0;}
阅读全文
0 0
- Coderforces 20C 最短路记录路径
- 最短路 记录路径
- 最短路+记录路径+变形!!
- uva 11374 最短路+记录路径 dijkstra最短路模板
- 图论---最短路(记录路径)
- 【最短路】poj2457 SPFA+记录路径
- dijkstra求最短路并记录路径
- 城市间紧急救援 ,复杂点的最短路,记录路径,记录最短路个数等
- POJ2457 Part Acquisition(Spfa最短路+记录路径)
- poj3984~用bfs求最短路~同时记录路径
- hdu 4871 树的分治+最短路记录路径
- 507E Breaking Good (最短路+记录路径)
- 最短路之 路径记录 dijkstra + floyd + SPFA 【小笔记】
- HDOJ 5294 Tricks Device 最短路(记录路径)+最小割
- HDOJ--1385--Minimum Transport Cost(最短路记录路径)
- HDOJ 1385 Minimum Transport Cost (最短路 Floyd & 路径记录)
- hdu 1385 Minimum Transport Cost(最短路+记录路径)
- 兔子与樱花(map+最短路+记录路径)
- 动态规划--01背包问题
- rrd安装和使用
- ZOJ 3600 Taxi Fare(模拟)
- 前缀和--BZOJ-4972 小Q的方格纸
- 日期工具类(二)
- Coderforces 20C 最短路记录路径
- rockchip如何增加分区配置信息(6.0)--原创
- 函数链接性和语言链接性
- Java中的多线程图文详解
- Freebsd安装内核源码
- 深入理解JavaScript浏览器线程
- POJ1840Eqs(哈希表)
- (PHP)图片加文字和图片合成
- jq 遮罩层