严格次短路的求法-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.. ...
随机推荐
- python入门递归之汉诺塔
def hani(n,x,y,z): if n == 1 : print(x ,"-->",z) else: hani(n-1,x,z,y)#将n-1个盘子从x移到y pri ...
- 计划任务at和crontab
目标:会看,会写计划任务时间,会制定计划任务 一次性:at yum -y install at #安装at systemctl start atd #启动at服务 systemctl enable a ...
- centos6升级openssh至7.9
1.为了防止升级失败登陆不了,所以需要安装telnet mkdir /root/ssh_updateyum install -y telnet-serveryum install -y xinetd ...
- PHP中高级面试题 一个高频面试题:怎么保证缓存与数据库的双写一致性?
分布式缓存是现在很多分布式应用中必不可少的组件,但是用到了分布式缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题? Cache Aside ...
- pat 1023 Have Fun with Numbers(20 分)
1023 Have Fun with Numbers(20 分) Notice that the number 123456789 is a 9-digit number consisting exa ...
- hdu 1874 畅通工程续 (dijkstra(不能用于负环))
畅通工程续Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- nyoj 114-某种序列 (python EOFError, List, append)
114-某种序列 内存限制:64MB 时间限制:3000ms 特判: No 通过数:6 提交数:13 难度:4 题目描述: 数列A满足An = An-1 + An-2 + An-3, n >= ...
- 创建sql自定义的函数及商品分页sql存储过程
--商品筛选时判断品牌ID是否存在 --select dbo.isValite(94,94)create function isValite(@brandId int,@bId int)returns ...
- PHP 的面向对象 与 类
面向对象 == OO 学习面向对象 == XXOO;[学习使我快乐!] <!--附一个demo类的实例化--> http://note.youdao.com/noteshare?id=38 ...
- goland_beego框架学习--api实现
goland_beego框架学习--api实现 完成一项api实现的流程 (1)beego框架的router层里面注册路由 正则路由 为了用户更加方便的路由设置,beego 参考了 sinatra 的 ...