uva 558 Bellman_Ford
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的更多相关文章
- UVA 558 判定负环,spfa模板题
1.UVA 558 Wormholes 2.总结:第一个spfa,好气的是用next[]数组判定Compilation error,改成nexte[]就过了..难道next还是特殊词吗 题意:科学家, ...
- uva 558 - Wormholes(Bellman Ford判断负环)
题目链接:558 - Wormholes 题目大意:给出n和m,表示有n个点,然后给出m条边,然后判断给出的有向图中是否存在负环. 解题思路:利用Bellman Ford算法,若进行第n次松弛时,还能 ...
- UVA 558 Wormholes
要问是否存在一个总权重为负数的环,用dfs即可解决. time:33ms #include <cstdio> #include <cstring> #define N 3000 ...
- UVA 558 Wormholes 【SPFA 判负环】
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...
- uva 558 tree(不忍吐槽的题目名)——yhx
You are to determine the value of the leaf node in a given binary tree that is the terminal node of ...
- UVA - 558 Wormholes (SPEA算法模板题)
先给出题面:https://vjudge.net/problem/UVA-558 题意描述:给你含n个点以及m条边的图,让你判断在这个图中是否存在负权回路. 首先,我们来介绍什么是SPEA算法 SPF ...
- UVA 558 SPFA 判断负环
这个承认自己没看懂题目,一开始以为题意是形成环路之后走一圈不会产生负值就输出,原来就是判断负环,用SPFA很好用,运用队列,在判断负环的时候,用一个数组专门保存某个点的访问次数,超过了N次即可断定有负 ...
- UVa 11090 Going in Cycle!!【Bellman_Ford】
题意:给出n个点m条边的加权有向图,求平均值最小的回路 自己想的是用DFS找环(真是too young),在比较找到各个环的平均权值,可是代码实现不了,觉得又不太对 后来看书= =好巧妙的办法, 使用 ...
- UVa 11090 Going in Cycle!! (Bellman_Ford)
题意:给定一个加权有向图,求平均权值最小的回路. 析:先十分答案,假设答案是 ans,那么有这么一个回路,w1+w2+w3+...+wk < k*ans,这样就是答案太大,然后移项可得,(w1- ...
随机推荐
- Java之日期和时间的计算
学习是一个循序渐进的过程,不知道你们有没有这样的感受:有很多学习过的知识在很久没有温习之后就不知不觉地还给老师了.所以最近总结,把那些还给老师的再找回来. 运行图: 时间戳: 运行效果图: 时间日期的 ...
- Objective-C 【关于导入类(@class 和 #import的区别)】
之前我们分析过 #include 和 #import 的区别,#import不会引起交叉编译,#import 确定一个文件只能被导入一次,使在递归包含中不会出现问题. 那么 #import 和 @cl ...
- GitHub 基本操作流程
GitHub是最先进的分布式版本控制工具,下面是我学习中总结的操作流程,仅供参考 ----------------------------------------------------------- ...
- CKedit在线编辑器
在线编辑器 在实现所见即得的编辑效果. FCK 是开发者的名字的缩写 CKEditor 功能很完善的,具有,在线编辑与图片上传JS插件 UEdit ...
- strcpy、strncpy、strlcpy的区别
- (hdu)5423 Rikka with Tree (dfs)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5423 Problem Description As we know, Rikka is p ...
- C/C++编译过程理解【转】
转载自:http://www.cppblog.com/woaidongmao/archive/2008/11/07/66254.aspx 今天,通过自己的努力终于对C/C++的编译过程有了个粗略的了解 ...
- RadioStream应用源码完整版(iphone版和ipad版)
RadioStream应用源码完整版(iphone版和ipad版),这个项目是从那个ios教程网分析过了的,也是一个不错的国外音乐应用的,支持iphone版和ipad版. <ignore_js_ ...
- L012-oldboy-mysql-dba-lesson12
L012-oldboy-mysql-dba-lesson12 graphite监控mysql可以达到秒级别 Zabbix for mysql NagiosXI daemontools linux ...
- 《RHEL6.3 FTP服务器虚拟用户的配置(含图)》——如此简单
虚拟用户就是传说中的ftp服务vip用户,大致分为这么几步: 1.安装ftp软件包 yum install *ftp* 2.启动vsftpd服务 /etc/init.d/vsftpd restart ...