博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018.09.15 vijos1053Easy sssp(最短路)
阅读量:5127 次
发布时间:2019-06-13

本文共 1599 字,大约阅读时间需要 5 分钟。

貌似可以最短路时同时判定负环啊。
但我不想这样做。
于是写了一个dfs版的判环,bfs版的求最短路。
代码:

#include
#include
#include
#include
#include
#define N 1005#define M 1000005#define inf 0x3f3f3f3fusing namespace std;inline int read(){ int ans=0,w=1; char ch=getchar(); while(!isdigit(ch)){
if(ch=='-')w=-1;ch=getchar();} while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar(); return ans*w;}int n,m,first[N],cnt=0,d[N];bool in[N];struct edge{
int v,next,w;}e[M<<1];inline void add(int u,int v,int w){e[++cnt].v=v,e[cnt].w=w,e[cnt].next=first[u],first[u]=cnt;}inline bool spfa(int p){ in[p]=true; for(int i=first[p];i;i=e[i].next){ int v=e[i].v; if(d[v]>d[p]+e[i].w){ d[v]=d[p]+e[i].w; if(in[v]||spfa(v))return in[p]=false,true; } } return in[p]=false;}inline bool check(){ for(int i=1;i<=n;++i)if(spfa(i))return true; return false;}inline void Spfa(int s){ queue
q; for(int i=1;i<=n;++i)d[i]=inf,in[i]=false; q.push(s),d[s]=0,in[s]=true; while(!q.empty()){ int x=q.front(); q.pop(); in[x]=false; for(int i=first[x];i;i=e[i].next){ int v=e[i].v; if(d[v]>d[x]+e[i].w){ d[v]=d[x]+e[i].w; if(!in[v])in[v]=true,q.push(v); } } }}int main(){ int s; n=read(),m=read(),s=read(); for(int i=1;i<=m;++i){ int u=read(),v=read(),w=read(); add(u,v,w); } if(check()){ printf("-1");return 0;} Spfa(s); for(int i=1;i<=n;++i){ if(d[i]==inf)puts("NoPath"); else printf("%d\n",d[i]); } return 0;}

转载于:https://www.cnblogs.com/ldxcaicai/p/9738266.html

你可能感兴趣的文章
VC6.0调试技巧(一)(转)
查看>>
php match_model的简单使用
查看>>
SIP服务器性能测试工具SIPp使用指导(转)
查看>>
C# 类(10) 抽象类.
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
STM32单片机使用注意事项
查看>>
js window.open 参数设置
查看>>
032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
查看>>
移动开发平台-应用之星app制作教程
查看>>
leetcode 459. 重复的子字符串(Repeated Substring Pattern)
查看>>
springboot No Identifier specified for entity的解决办法
查看>>
浅谈 unix, linux, ios, android 区别和联系
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>