VIJOS 1053 Easy sssp 负权最短路
来源:互联网 发布:魔镜淘宝助手插件 编辑:程序博客网 时间:2024/05/22 00:35
题目大意:
中文题。
解题思路:
带负权的最短路,记录一下每个点入队次数,入队两次即说明存在负环。
#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<set>#include<queue>#include<vector>#define LL long long#define db double#define maxnn 10000000#define EPS 1e-15#define inf 1000000000#define pa pair<int,int>using namespace std;const int maxn=101000;int n,m,k,t,x,y,s,z,tot=0;struct edge{ int to,w,next;}e[1010000];int head[maxn],dist[maxn],ans[maxn];bool vis[maxn];int f[maxn];bool flag;void add(int x,int y,int z){ e[tot].to=y; e[tot].w=z; e[tot].next=head[x]; head[x]=tot++;}bool spfa(int s){queue<int>q;memset(dist,63,sizeof(dist));memset(vis,false,sizeof(vis));memset(ans,0,sizeof(ans));q.push(s);dist[s]=0;while(!q.empty()){int u=q.front(); q.pop();vis[u]=false;for (int i=head[u];i!=-1;i=e[i].next){if (dist[e[i].to]>dist[u]+e[i].w){dist[e[i].to]=dist[u]+e[i].w;if (!vis[e[i].to]){vis[e[i].to]=1;int v=e[i].to;q.push(v);if (ans[v]<2) {ans[v]++;}else return true;}}}}return false;}int main(){ scanf("%d%d%d",&n,&m,&s); memset(head,-1,sizeof(head)); for(int i=1;i<=m;i++){ scanf("%d%d%d",&x,&y,&z); add(x,y,z); if(x==y && z<0){ printf("-1\n"); return 0; } } for(int i=1;i<=n;i++){ if(spfa(i)){ printf("-1\n"); return 0; } } spfa(s); for(int i=1;i<=n;i++){ if(dist[i]>1000000){ if(i!=s) printf("NoPath\n"); else printf("0\n"); } else printf("%d\n",dist[i]); } return 0;}
0 0
- VIJOS 1053 Easy sssp 负权最短路
- Vijos 1053 Easy sssp
- VIJOS 1552 Easy sssp
- Vijos P1053 Easy sssp(SPFA 判负环)
- Easy sssp
- spfa算法 Easy sssp
- vijosP1053 Easy sssp
- easy sssp(spfa判断负环)
- 正权图单源最短路(SSSP)- Dijkstra算法
- Vijos 1082 最短路
- 【最短路】Vijos P1046 观光旅游
- |Vijos|图论最短路|P1046 观光旅游
- 【vijos】【建反图最短路】最优贸易
- UOJ Easy Round #7 短路
- |Vijos|图论最短路|P1082 丛林冒险
- |Vijos|图论最短路|P1406 古韵之鹊桥相会
- |Vijos|图论最短路|P1155 集合位置
- vijos p1285(最短路变形+计数)
- 用cordova插件实现ionic第三方登录,获取信息和分享
- 66 GCD常用方法
- linux网络配置
- 安卓系统API的使用
- 67 ARC单例实现
- VIJOS 1053 Easy sssp 负权最短路
- 975 关于521【打表】
- Android之发送短信和接收验证码
- 给docker的官方mongo镜像添加认证登录
- 关于View的ScrollTo, getScrollX 和 getScrollY
- 68 MRC单例实现
- 程序媛开发之路—字符
- GitHub优秀的 Android 开源项目整理-经典版
- org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update