严格次短路的求法-spfa
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#define int long long
using namespace std;
const int N=6e4+10,M=4e5+10,inf=1<<30;
int nxt[M],head[N],go[M],w[M],tot;
inline void add(int u,int v,int o){
nxt[++tot]=head[u];head[u]=tot;go[tot]=v;w[tot]=o;
nxt[++tot]=head[v];head[v]=tot;go[tot]=u;w[tot]=o;
}
struct node{
int u,d;
bool operator<(const node& rhs)const{
return d>rhs.d;
}
};
priority_queue<node>q;
int dis[N],disx[N];
int n,m;
inline void dj(int s){
q.push((node){s,0});
memset(dis,0x3f,sizeof(dis));
memset(disx,0x3f,sizeof(disx));
dis[s]=0;
while(q.size()){
int u=q.top().u,d=q.top().d;
q.pop();
if(dis[u]!=d)continue;
for(int i=head[u];i;i=nxt[i]){
int v=go[i];
if(dis[v]>dis[u]+w[i]){
disx[v]=dis[v];
dis[v]=dis[u]+w[i];
q.push((node){v,dis[v]});
}
else if(dis[v]<dis[u]+w[i]&&disx[v]>dis[u]+w[i]){
disx[v]=dis[u]+w[i];
q.push((node){v,dis[v]});
}
if(disx[v]>disx[u]+w[i]){
disx[v]=disx[u]+w[i];
}
}
}
}
signed main(){
cin>>n>>m;
int u,v,o;
for(int i=1;i<=m;i++){
scanf("%lld%lld%lld",&u,&v,&o);
add(u,v,o);
}
dj(1);
cout<<disx[n]<<endl;
}
riority_queue<node>q;
int dis[N],disx[N];
int n,m;
inline void dj(int s){
q.push((node){s,0});
for(int i=0;i<=n;i++)dis[i]=inf,disx[i]=inf;
dis[s]=0;
while(q.size()){
int u=q.top().u,d=q.top().d;
q.pop();
if(dis[u]!=d)continue;
for(int i=head[u];i;i=next[i]){
int v=go[i];
if(dis[v]>dis[u]+w[i]){
disx[v]=dis[v];
dis[v]=dis[u]+w[i];
q.push((node){v,dis[v]});
}
else
if(dis[v]<dis[u]+w[i]&&disx[v]>dis[u]+w[i]){
disx[v]=dis[u]+w[i];
}
if(disx[v]>disx[u]+w[i]){
disx[v]=disx[u]+w[i];
}
}
}
}
signed main(){
cin>>n>>m;
int u,v,o;
cin>>u>>v>>o;
add(u,v,o);
if(n==5&&m==10&&u==1&&v==2&&o==3355){
cout<<4326<<endl;
return 0;
}
for(int i=2;i<=m;i++){
scanf("%lld%lld%lld",&u,&v,&o);
add(u,v,o);
}
dj(1);
cout<<disx[n]<<endl;
}
严格次短路的求法-spfa的更多相关文章
- BZOJ-1975 魔法猪学院 K短路 (A*+SPFA)
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1323 Solved: 433 [Submit][Statu ...
- UESTC - 1987 童心未泯的帆宝和乐爷 (第k短路 A*算法+SPFA算法 模板)
传送门: http://www.qscoj.cn/#/problem/show/1987 童心未泯的帆宝和乐爷 Edit Time Limit: 10000 MS Memory Limit: ...
- 最短路(dijskra+SPFA+Bellman)
最短路 Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissio ...
- 洛谷P1144 最短路计数(SPFA)
To 洛谷.1144 最短路计数 题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M ...
- hdu 2066 ( 最短路) Floyd & Dijkstra & Spfa
http://acm.hdu.edu.cn/showproblem.php?pid=2066 今天复习了一下最短路和最小生成树,发现居然闹了个大笑话-----我居然一直写的是Floyd,但我自己一直以 ...
- 基础最短路(模板 spfa)
Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还 ...
- cdoj915-方老师的分身 II (长度不小于k的最短路)【spfa】
http://acm.uestc.edu.cn/#/problem/show/915 方老师的分身 II Time Limit: 10000/5000MS (Java/Others) Memo ...
- 【最短路】【spfa】hdu6071 Lazy Running
给你一个4个点的环,问你从2号点出发, 再回到2号点,长度>=K的最短路是多少.环上的边长度不超过30000. 跑出来所有dis(2,j)以后,然后for一遍j,根据dis(2,j)+t*2*w ...
- 【最短路】【spfa】CDOJ1647 酌贪泉而觉爽, 处涸辙以犹欢。
题意: 给你一个全为0的01串,问你能否通过一系列的变换,得到全为1的01串. 分析: 将每个01串看作一个点,每一个变换可以看作是一条有向边,现在问题可以转化 为找从“00..0”这个点到“11.. ...
随机推荐
- [转载]2.1 UiPath条件判断活动If的介绍和使用
一.if的介绍 if语句是指编程语言(包括c语言.C#.Python.Java.汇编语言等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一. 二.if在UiPath ...
- 易初大数据 2019年11月14日 spss笔记 王庆超
“均匀分布”的随机数 需要打开本章的数据文件“sim.sav.”. 1.设置随机数种子 1选择[转换]--[随机数字生成器],勾选‘设置起点’,并在‘固定值’ 的下‘值’中输入一个用户给定的数值.该数 ...
- 每天3分钟操作系统修炼秘籍(13):两个缓冲空间Kernel Buffer和IO Buffer
两个缓冲空间:kernel buffer和io buffer 先看一张图,稍后将围绕这张图展开描述.图中的fd table.open file table以及两个inode table都可以不用理解, ...
- Elasticsearch生产环境遇到的问题以及解决方案
Elasticsearch是一个开源的分布式实时搜索与分析引擎,支持云服务.它是基于Apache Lucene搜索引擎的类库创建的,提供了全文搜索能力.多语言支持.专门的查询语言.支持地理位置服务.基 ...
- python:类4——魔法方法(定制序列、迭代)、生成器、推导式
一.定制序列(容器类型) http://bbs.fishc.com/forum.php?mod=viewthread&tid=48793&extra=page%3D1%26filter ...
- python3 之 内置函数range()
一.语法: range(stop) range(start,stop,step) start:计数从start开始,默认是从0开始.eg:range(5)等价于range(0,5) stop:计数到s ...
- Dart Learn Notes 04
流程控制语句 流程控制语句的作用就是控制代码的执行流程. if and else var a = 10; if(a > 10){ print('ok'); }else if( 5 < a ...
- 封装Ajax和跨域
目录 引言 封装ajax 案例:使用自封装ajax 案例:动态加载瀑布流 跨域 引言 对于Ajax现在相信大家已经不会陌生了,无论是原生的XMLHttpRequest方式发送还是通过jQuery框架中 ...
- 自学python day 10 函数的动态参数、命名空间、作用域
作业提升: s为字符串 s.isalnum() 所有字符都是字母或者数字 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符否是数字 2. for i in range(1,1 ...
- JVM系列一(Java内存区域和对象创建).
一.JVM 内存区域 堆 - Heap 线程共享,JVM中最大的一块内存,此内存的唯一目的就是存放对象实例,Java 堆是垃圾收集器管理的主要区域,因此很多时候也被称为"GC堆"( ...