POJ3255(次最短路)
描述
求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(次最短路)的更多相关文章
- poj3255 Roadblocks 次短路
Roadblocks Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10098 Accepted: 3620 Descr ...
- 【noip 模拟赛curse,light,maze】 题解
2018.10.16 总结:考的不好 原因: 1.考的时候没状态,读题读不进去 2.考的时候不仔细,该得分没得到 T1:curse 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到 ...
- POJ3255次短路
POJ3255 题意:给定一个图,求从1到n的次短路 分析:我们需要在dijkstra上作出一些修改,首先,到某个顶点v的次短路要么是到其他某个顶点u的最短路在加上u到v的边,要么是到v的次短路再加上 ...
- POJ-3255 Roadblocks---Dijkstra队列优化+次短路
题目链接: https://vjudge.net/problem/POJ-3255 题目大意: 给无向图,求1到n的次短路长度 思路: 由于边数较多,应该使用dijkstra的队列优化 用d数组存储最 ...
- POJ3255 Roadblocks [Dijkstra,次短路]
题目传送门 Roadblocks Description Bessie has moved to a small farm and sometimes enjoys returning to visi ...
- 【POJ3255/洛谷2865】[Usaco2006 Nov]路障Roadblocks(次短路)
题目: POJ3255 洛谷2865 分析: 这道题第一眼看上去有点懵-- 不过既然要求次短路,那估计跟最短路有点关系,所以就拿着优先队列优化的Dijkstra乱搞,搞着搞着就通了. 开两个数组:\( ...
- 算法复习———dijkstra求次短路(poj3255)
题目: Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her ...
- POJ3255 Roadblocks 严格次短路
题目大意:求图的严格次短路. 方法1: SPFA,同时求单源最短路径和单源次短路径.站在节点u上放松与其向量的v的次短路径时时,先尝试由u的最短路径放松,再尝试由u的次短路径放松(该两步并非非此即彼) ...
- 《挑战程序设计竞赛》2.5 最短路 AOJ0189 2249 2200 POJ3255 2139 3259 3268(5)
AOJ0189 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0189 题意 求某一办公室到其他办公室的最短距离. 多组输入,n表示 ...
随机推荐
- xml 文件 和xsd 文件的关系
XML文件和XSD文件的关系 2010-09-29 15:38 2307人阅读 评论(0) 收藏 举报 xml 1. XSD文件在某个namespace中定义element和type.此处定义的typ ...
- 我用Python一键保存了半佛老师所有的骚气表情包
本文首发于公众号「Python知识圈」,如需转载,请在公众号联系作者授权. 2019年发现两个有意思而且内容比较硬核的公众号.都是同一个人运营的,我们都叫他半佛老师,现实中的职业是风控,公众号内容涉及 ...
- 带权值的图 BFS
用bfs遍历最图求最短路径时通常借用优先队列即优先考虑最大的或者最小的权值 方法1 优先队列:(内置函数,优先考虑较小的权值) #include<iostream> #include< ...
- 6.表单提交,input键盘变搜索,有关自定义属性input操作
1.键盘变搜索 1.) 在form 上加action="#", 2.)input type=search, 3.)此时会提交到 #,需要再添加一个input display=non ...
- 终于明白if __name__ == '__main__':了
其实很简单 if __name__ == '__main__': 就是一个判断 __name__是系统变量 __name__有一个特性,在当前文件运行是__main__,调用文件就是调用文件的路径了 ...
- mybatis源码配置文件解析之三:解析typeAliases标签
在前边的博客在分析了mybatis解析settings标签,<mybatis源码配置文件解析之二:解析settings标签>.下面来看解析typeAliases标签的过程. 一.概述 在m ...
- JSP中引用CSS样式文件却无法显示的问题解决方案
你也遇到过这种问题吗,CSS写好了,JSP写好了,在JSP中调用CSS文件,路径检查后也正确,但是无法显示渲染后的页面 原因:罪魁祸首就是过滤器响应数据的时候,响应头设置为了“text/html”,但 ...
- MySQL不香吗,为什么还要有noSQL?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是分布式专题的第14篇文章,我们一起来看看NoSQL数据库. 其实我很早就想写写分布式数据库相关的文章,既是我现在正在学习的,也是我很感 ...
- TensorFlow-keras 100分类
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' from tensorflow.python.keras.datasets import cifa ...
- 箭头函数的this指向问题-一看就懂
OK,对于箭头函数的this 用一句话概括:箭头函数中的this指向的是定义时的this,而不是执行时的this. 如果上面这句话听的是懂非懂或者完全不懂的,没关系,下面会有案例讲解. 举个栗子 来看 ...