spfa判负环

如果一个点在spfa中被入队了大于n次

那么,我们就能肯定,有负环出现。

因为一个点入队时,他肯定被更新了一次。

所以........ 如果不存在负权环。这个点最多被更新节点数次

我们就可以利用这个性质判负环

亏我dijk写了一上午

题目

语文模板题

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
int dis[11000];
struct L
{
int point;
int weight;
int nxt;
};
L line[100000];
int head[10000],tail;
bool exist[100000];
int inque[100000];
queue<int> q;
int n,m;
void add(int x,int y,int val)
{
line[++tail].point=y;
line[tail].weight=val;
line[tail].nxt=head[x];
head[x]=tail;
}
void spfa(int begin)
{
memset(dis,0x3f,sizeof(dis));
memset(exist,0,sizeof(exist));
dis[begin]=0;
exist[begin]=true;
inque[begin]+=1;
q.push(begin);
int pass;
while(!q.empty())
{
pass=q.front();
q.pop();
exist[pass]=false;
if(inque[pass]>n)
{
printf("Forever love");
exit(0);
}
for(int need=head[pass];need;need=line[need].nxt)
if(dis[pass]+line[need].weight<dis[line[need].point])
{
dis[line[need].point]=dis[pass]+line[need].weight;
if(!exist[line[need].point])
{
q.push(line[need].point);
inque[line[need].point]+=1;
exist[line[need].point]=true;
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
int a,b,c;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
add(a,b,-1*c);
}
spfa(1);
int ha=dis[n];
spfa(n);
printf("%d",min(ha,dis[1]));
return 0;
}

spfa判负权边的更多相关文章

  1. poj 3621 二分+spfa判负环

    http://poj.org/problem?id=3621 求一个环的{点权和}除以{边权和},使得那个环在所有环中{点权和}除以{边权和}最大. 0/1整数划分问题 令在一个环里,点权为v[i], ...

  2. POJ 3259 Wormholes(SPFA判负环)

    题目链接:http://poj.org/problem?id=3259 题目大意是给你n个点,m条双向边,w条负权单向边.问你是否有负环(虫洞). 这个就是spfa判负环的模版题,中间的cnt数组就是 ...

  3. Poj 3259 Wormholes(spfa判负环)

    Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 42366 Accepted: 15560 传送门 Descr ...

  4. poj 1364 King(线性差分约束+超级源点+spfa判负环)

    King Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 14791   Accepted: 5226 Description ...

  5. BZOJ 4898 [APIO2017] 商旅 | SPFA判负环 分数规划

    BZOJ 4898 [APIO2017] 商旅 | SPFA判负环 分数规划 更清真的题面链接:https://files.cnblogs.com/files/winmt/merchant%28zh_ ...

  6. 浅谈SPFA判负环

    目录 SPFA判负环 [前言] [不可代替性] [具体实现] SPFA的过程 判负环 [核心代码] [例题] SPFA判负环 有不足的地方请指出 本蒟蒻一定会修改吼 [前言] 最短路的求法中最广为人知 ...

  7. [APIO2017]商旅——分数优化+floyd+SPFA判负环+二分答案

    题目链接: [APIO2017]商旅 枚举任意两个点$(s,t)$,求出在$s$买入一个物品并在$t$卖出的最大收益. 新建一条从$s$到$t$的边,边权为最大收益,长度为原图从$s$到$t$的最短路 ...

  8. [HNOI2009]最小圈 分数规划 spfa判负环

    [HNOI2009]最小圈 分数规划 spfa判负环 题面 思路难,代码简单. 题目求圈上最小平均值,问题可看为一个0/1规划问题,每个边有\(a[i],b[i]\)两个属性,\(a[i]=w(u,v ...

  9. [ACdream 1215 Get Out!]判断点在封闭图形内, SPFA判负环

    大致题意:在二维平面上,给一些圆形岛屿的坐标和半径,以及圆形船的位置和半径,问能否划到无穷远的地方去 思路:考虑任意两点,如果a和b之间船不能通过,则连一条边,则问题转化为判断点是否在多边形中.先进行 ...

随机推荐

  1. pdf.js使用爬过的坑

    最近项目里需要做一个在浏览器直接预览pdf的功能,有些浏览器可以直接预览pdf文件,但是有些不能(不要躲,说的就是你IE)查资料普遍推荐pdf.js,兼容能到ie9,很不错了. 1. 从pdf.js官 ...

  2. ora-1652

    ###检查是否有temp 在使用 step 2: 检查是否有事务使用到temp,并且进行删除. SELECT vt.inst_id,vs.sid,vs.serial#,vs.username,vs.o ...

  3. python 自动安装工具 setuptools(easy_install) 的使用

    1.下载安装 python 安装工具,下载地址:http://pypi.python.org/pypi/setuptools ,可以找到正确的版本进行下载. 2.解压缩后双击 ez_setup.py ...

  4. jquery中load()加载页面,刷新之后,加载的页面不显示的解决办法

    <script language="javascript" type="text/javascript"> $(function(){ $(&quo ...

  5. Andrew Ng 的 Machine Learning 课程学习 (week5) Neural Network Learning

    这学期一直在跟进 Coursera上的 Machina Learning 公开课, 老师Andrew Ng是coursera的创始人之一,Machine Learning方面的大牛.这门课程对想要了解 ...

  6. 【snmp】测试流程

    一.SNMP协议概述 SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器.工作站.路由器.交换机等)的标准协议.SNMP能够使网络管理员提高网络管理效能,及时发现 ...

  7. Day7上

    T1 部分分 枚举某个数 100 离散化.或 map 相对了不知道呢过不能过. T2 逆序对,不知对不对 归并排序,

  8. Entity Framework Many to Many Relation Mapping(Entity Framework多对多关系映射)

    通常我们在做数据库设计时都会有两张表是多对多关系的时候,在数据库做多对多关系时候我们通常通过中间关联表来处理,那我们现在在EF中是如何处理的呢? 假设我们有如下关系,用户(User)包含多个角色(Ro ...

  9. npm 包下载很慢的解决办法

    原因: 国内访问外网都很慢,甚至不能访问!安装Node时自带的npm地址默认是:http://registry.npmjs.org  三种方法: 1.通过config命令 npm config set ...

  10. 合并Gridview单元格

    Introduction There are a lot of methods in the Internet solving the problem of how to merge GridView ...