poj3259,简单判断有无负环,spfa
英语能力差!百度的题意才读懂!就是一个判断有无负环的题。SPFA即可。,注意重边情况!!
#include<iostream> //判断有无负环,spfa
#include<queue>
#include<cstring>
#include<cstdio>
using namespace std;
int mark[503];int a[503][503];int d[503];int num_in[503];
bool spfa(int n)
{
queue<int>q;
q.push(1);
d[1]=0;
num_in[1]++; //统计入队次数
while(!q.empty())
{
int cur=q.front();
q.pop();
if(num_in[cur]>=n)return 1; //大于n,结束,表示有负环
mark[cur]=0; //出队
for(int i=1;i<=n;i++)
{
if(a[cur][i]+d[cur]<d[i]) //能松弛的松弛
{
d[i]=a[cur][i]+d[cur];
if(mark[i]==0) //能松弛又不在队列中的要入队
{
mark[i]=1;
if(num_in[i]>=n)return 1;//大于n,结束,表示有负环
q.push(i);
num_in[i]++;
}
}
}
}
return 0;
}
int main()
{
int num,n,m,w;
scanf("%d",&num);
while(num--)
{
scanf("%d%d%d",&n,&m,&w);
memset(d,0x3f,sizeof(d));
memset(a,0x3f,sizeof(a));
memset(mark,0,sizeof(mark));
memset(num_in,0,sizeof(num_in));
int x,y;
for(int i=0;i<m;i++) //注意重边!
{
scanf("%d%d",&x,&y);
int temp; scanf("%d",&temp);
if(a[x][y]>temp)
{
a[x][y]=temp;
a[y][x]=a[x][y];
}
}
for(int i=0;i<w;i++)
{
scanf("%d%d",&x,&y);
int temp;scanf("%d",&temp);
temp=-temp;
if(a[x][y]>temp)
{
a[x][y]=temp;
}
}
if(spfa(n))printf("YES\n");
else printf("NO\n");
}
return 0;
}
poj3259,简单判断有无负环,spfa的更多相关文章
- POJ-3259 Wormholes---SPFA判断有无负环
题目链接: https://vjudge.net/problem/POJ-3259 题目大意: 农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的 ...
- Wormholes 最短路判断有无负权值
Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...
- Spfa【p3385】【模板】负环(spfa)
顾z 你没有发现两个字里的blog都不一样嘛 qwq 题目描述 毒瘤数据要求判负环 分析: 还是融合了不少题解的思想的. 负环定义: 权值和为负的环 //在网络上并没有找到一个官方定义,暂且这么理解. ...
- [P3385]【模板】负环 (spfa / bellman-ford)
终于开始认真对待图论了 因为听说一直是提高组的,动得很少,直到现在机房打提高的氛围下,开始学一些皮毛的东西 模板题目链接 这是一道求负环的题目,照理来说大家都是用spfa来判断负环的 但是我觉得bel ...
- 【BZOJ4773】负环 [SPFA][二分]
负环 Time Limit: 100 Sec Memory Limit: 256 MB[Submit][Status][Discuss] Description 在忘记考虑负环之后,黎瑟的算法又出错 ...
- 洛谷P3385判负环——spfa
题目:https://www.luogu.org/problemnew/show/P3385 两种方法,dfs和bfs: 一开始写的dfs,要把dis数组初值赋成0,这样从一个连着负边的点开始搜: 在 ...
- 负环--spfa
洛谷板子题 负环?是有负权边的环还是一个边权之和为负的环? 还没有准确的定义(那就先忽略吧qwq 判断负环的方法: 暴力枚举/spfa/mellman—ford/奇怪的贪心/超神的搜索 可惜我只会sp ...
- 洛谷 P3385 【模板】负环 (SPFA)
题意:有一个\(n\)个点的有向图,从\(1\)出发,问是否有负环. 题解:我们可以用SPFA来进行判断,在更新边的时候,同时更新路径的边数,因为假如有负环的话,SPFA这个过程一定会无限重复的遍历这 ...
- luogu3385 负环 (spfa)
我在做spfa的时候,如果有一个点被更新了超过N次,证明这个图里是有负环的. (神TM输出YE5和N0) #include<bits/stdc++.h> #define pa pair&l ...
随机推荐
- flutter基础
1.flutter安装 1.参考官网安装sdk https://flutter.io/get-started/install 安卓和IOS需要分别配置对应的开发环境,安卓建议使用as开发,安装Flut ...
- 【java基础】Java锁机制
在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁(广义) 互斥锁/读写锁(独享锁/共享锁的实现) 乐观锁 ...
- ubuntu下安装方式汇总
apt-get 可辅助通过 apt-cache search curl | grep php 查找已支持的插件,然后通过下面apt-get下载安装,例: apt-get install php5-cu ...
- How `new’ operator works ?
这是2013年写的一篇旧文,放在gegahost.net上面 http://raison.gegahost.net/?p=15 February 15, 2013 How `new’ operator ...
- 51nod 1272 最大距离
题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 给出一个长度为N的整数数组A,对于每一个数组元素,如果他后面存在大于等 ...
- C程序(1)
- struct获取不到值的小错误
struct2 get set 这两个方法一定要用双骆驼命名法:getA() setA(), 而geta() seta()不行 我找了好久的错误,只能说框架这东西快捷方便,找起错误要人命
- docker run之后状态总是Exited
add -it docker run -it -name test -d nginx:latest /bin/bash
- C++中static,extern和extern "C"关键字
1. extern 变量 extern 表明该变量在别的地方已经定义过了,在这里要使用那个变量. 当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern in ...
- Angular缺少 FormsModule
虽然 ngModel是一个有效的 Angular 指令,不过它在默认情况下是不可用的. 解决方法: 在根模块引入FormModule import { FormsModule } from '@ang ...