uva 558 Bellman_Ford
来源:互联网 发布:2015年淘宝网店数量 编辑:程序博客网 时间:2024/06/17 12:52
Bellman_Ford算法 求图中是否存在负权值的回路 若图中不存在 则最短路最多经过n-1个结点 若经过超过n-1个节点 则存在负权值的回路 此图永远无法找到最短路 每条边最多经过n-1次松弛~~
#include<cstdio>#include<cstring>#include<queue>#include<vector>using namespace std;const int INF = 100000000;const int maxn = 1005;vector<int> G[maxn];int weight[maxn][maxn];queue<int> q;bool inq[maxn];int d[maxn],vis[maxn];int n,m;bool Bellman_Ford(){ for(int i = 0 ; i < n; i++) d[i] = INF,inq[i] = false; d[0] = 0; memset(vis, 0, sizeof(vis)); q.push(0); inq[0] = true; while(!q.empty()) { int u = q.front(); q.pop(); inq[u] = false; for(int i = 0; i < (int)G[u].size(); i++) { int v = G[u][i]; if(d[v] > d[u] + weight[u][v]) { d[v] = d[u] + weight[u][v]; if(!inq[v]) { inq[v] = true; vis[v++]; if(vis[u] >= n) return true; q.push(v); } } } } return false;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i = 0; i < n; i++) G[i].clear(); for(int i = 0 ; i < m; i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); G[u].push_back(v); weight[u][v] = w; } if(Bellman_Ford()) puts("possible"); else puts("not possible"); } return 0;}
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<queue>#include<algorithm>using namespace std;const int N = 2005;const int INF = 0xffffff;struct Edge{ int u,v,w;} edge[N];int n,m;int d[N];bool Bellman_Ford(){ for(int i = 0; i < n; i++) d[i] = INF; d[0] = 0; bool flag; for(int i = 0; i < n; i++) { flag=false; for(int j = 0; j < m; j++) { if(d[edge[j].v] > d[edge[j].u]+edge[j].w) { d[edge[j].v] = d[edge[j].u]+edge[j].w; flag=true; } } if(!flag) break; } for(int j = 0; j < m; j++) if(d[edge[j].v] > d[edge[j].u]+edge[j].w) return true; return false;}int main(){ int t; scanf("%d",&t); while(t--) { memset(edge,0,sizeof(edge)); scanf("%d%d",&n,&m); for(int i = 0; i < m; i++) scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].w); if(Bellman_Ford()) puts("possible"); else puts("not possible"); } return 0;}
- uva 558 Bellman_Ford
- bellman_ford
- Bellman_Ford uva 11280 - Flying to Fredericton
- uva 10000 - Longest Paths(bellman_ford算法过)
- Bellman_Ford模板
- Bellman_Ford POJ3259
- zju3033(bellman_ford)
- poj3259(Bellman_ford)
- Bellman_ford算法
- Bellman_ford算法
- poj3259 Bellman_Ford
- Bellman_ford算法
- Bellman_Ford 算法
- Bellman_Ford算法
- 【bellman_ford】poj2240
- Bellman_Ford算法
- poj3259 Bellman_ford
- bellman_ford 模板
- rqn 144 伯虎点秋香(字符串处理)
- 数字证书机构CA
- C++中虚析构函数的作用(转载)
- gone fishing 贪心
- Android 百度地图 DemoApplication报错java.lang.ExceptionInitializerError解决方法
- uva 558 Bellman_Ford
- hdu 1536 S-Nim
- 11g+ASM oracle 安装
- hdu 4503 湫湫系列故事——植树节 组合概率
- 人人和企鹅的web登陆加密
- .NET领域驱动设计—看DDD是如何运用设计模式颠覆传统架构
- 中缀表达式转后缀表达式
- S3C2410 实验三——跑马灯实验
- UVALive 4048 Fund Management