描述

求1到n的次最短路

开个\(dis[maxn][2]\)的储存距离的二维数组,0储存最短路,1储存次短路

初始化全为正无穷,\(dis[1][0]=0;\)

然后遍历更新时,先尝试更新最短路和次短路,不行就尝试更新次短路;

如果入队的距离已经大于次短路的距离,那么没必要继续,continue;

#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
const int inf=999999999;
const int maxn=200009;
struct node{
int to,nxt,w;
}d[maxn];int head[maxn],cnt=1,dis[maxn][3],n,m;
void add(int u,int v,int w){
d[cnt].nxt=head[u],d[cnt].to=v,d[cnt].w=w,head[u]=cnt++;
}
typedef pair<int,int>p;//最短路和顶点编号
void dij(int s)
{
priority_queue<p,vector<p>,greater<p> >q;//默认小的先出来
for(int i=0;i<=n;i++) dis[i][0]=dis[i][1]=inf;
dis[1][0]=0;q.push(p(0,1));
while(!q.empty())
{
p ans=q.top();q.pop();
int lu=ans.first,v=ans.second;
if(dis[v][1]<lu) continue;
for(int i=head[v];i;i=d[i].nxt)
{
node e=d[i];
int dd=lu+e.w;
if(dis[e.to][0]>dd)//更新最短路
{
swap(dis[e.to][0],dd);
q.push(p(dis[e.to][0],e.to));
//如果比最短路短,就把最短路给次短路,dd给最短路
//如果不比次短路短,也会到下一个if去尝试更新次短路
}
if(dis[e.to][1]>dd&&dis[e.to][0]<dd)
{
dis[e.to][1]=dd;
q.push(p(dd,e.to));
}
}
}
cout<<dis[n][1]<<endl;
}
using namespace std;
int main()
{
while(cin>>n>>m)
{
for(int i=1;i<=m;i++)
{
int l,r,w;
cin>>l>>r>>w;
add(l,r,w);add(r,l,w);
}
dij(1);
}
return 0;
}

POJ3255(次最短路)的更多相关文章

  1. poj3255 Roadblocks 次短路

    Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10098   Accepted: 3620 Descr ...

  2. 【noip 模拟赛curse,light,maze】 题解

    2018.10.16 总结:考的不好 原因: 1.考的时候没状态,读题读不进去 2.考的时候不仔细,该得分没得到 T1:curse 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到 ...

  3. POJ3255次短路

    POJ3255 题意:给定一个图,求从1到n的次短路 分析:我们需要在dijkstra上作出一些修改,首先,到某个顶点v的次短路要么是到其他某个顶点u的最短路在加上u到v的边,要么是到v的次短路再加上 ...

  4. POJ-3255 Roadblocks---Dijkstra队列优化+次短路

    题目链接: https://vjudge.net/problem/POJ-3255 题目大意: 给无向图,求1到n的次短路长度 思路: 由于边数较多,应该使用dijkstra的队列优化 用d数组存储最 ...

  5. POJ3255 Roadblocks [Dijkstra,次短路]

    题目传送门 Roadblocks Description Bessie has moved to a small farm and sometimes enjoys returning to visi ...

  6. 【POJ3255/洛谷2865】[Usaco2006 Nov]路障Roadblocks(次短路)

    题目: POJ3255 洛谷2865 分析: 这道题第一眼看上去有点懵-- 不过既然要求次短路,那估计跟最短路有点关系,所以就拿着优先队列优化的Dijkstra乱搞,搞着搞着就通了. 开两个数组:\( ...

  7. 算法复习———dijkstra求次短路(poj3255)

    题目: Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her ...

  8. POJ3255 Roadblocks 严格次短路

    题目大意:求图的严格次短路. 方法1: SPFA,同时求单源最短路径和单源次短路径.站在节点u上放松与其向量的v的次短路径时时,先尝试由u的最短路径放松,再尝试由u的次短路径放松(该两步并非非此即彼) ...

  9. 《挑战程序设计竞赛》2.5 最短路 AOJ0189 2249 2200 POJ3255 2139 3259 3268(5)

    AOJ0189 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0189 题意 求某一办公室到其他办公室的最短距离. 多组输入,n表示 ...

随机推荐

  1. Redis分布式锁的实现以及工具类

    一.应用场景: 本文应用的场景为在查询数据时,发现数据不存在此时就需要去查询数据库并且更新缓存,此时可能存在高并发的请求同时打在数据库上,而针对这种情况必须要给这些请求加锁,故而采用了分布式锁的方式. ...

  2. springboot项目war包部署及出现的问题Failed to bind properties under 'mybatis.configuration.mapped-statements[0].

    1.修改pom文件 修改打包方式 为war: 添加tomcat使用范围,provided的意思即在发布的时候有外部提供,内置的tomcat就不会打包进去 <groupId>com.scho ...

  3. DVWA渗透笔记

    Command Injection Low <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input $target = $_REQUEST[ ...

  4. [linux][nginx] 常用2

    出现提示"Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address alre"的错误提示. 这 ...

  5. Java工作流引擎-集团模式下的权限 设计与实现

    关键字 工作流开发框架权限设计.用户组.岗位.集团模式应用. java工作流程引擎, .net 工作流引擎,工作流开发框架 相关的表结构 -- 相关组织-表结构. SELECT No,Name,Par ...

  6. BIOS时间与系统时间(windows/linux时间同步问题)

    写作动机 双系统是不少人喜欢的方式,但安装双系统之后一般会出现两个系统时间不一样的问题,刚开始用双系统的时候也没怎么在意,就是装上后在网上找找相关解决方法,复制粘贴代码完事儿.但是次数多了就有点烦了, ...

  7. 理解java容器底层原理--手动实现HashSet

    HashSet的底层其实就是HashMap,换句话说HashSet就是简化版的HashMap. 直接上代码: package com.xzlf.collection2; import java.uti ...

  8. java算法-二分法查找实现

    什么是二分法查找 首先,使用二分法查找的前提是:被查找的数组已排好序 具体实现: 假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量front,mid,end分别 ...

  9. Idea上tomcat部署细节

    ​ 一.On Update action: (1)Update resources:更新项目变更的.jsp,.xml文件等资源文件,而不会更新源码文件:(仅修改项目的JS文件.JSP文件.CSS文件推 ...

  10. Async,Await 深入源码解析

    1.同步与异步 假设存在 IO事件A:请求网络资源 (完成耗时5s) IO事件B:查询数据库 (完成耗时5s) 情况一:线程1工人在发起A请求后,一直阻塞等待,在A响应返回结果后再接着处理事件B,那总 ...