P2294 [HNOI2005]狡猾的商人

对于每个$(x,y,w)$,连边$(x-1,y,w),(y,x-1,-w)$,表示前$y$个月的收益比前$x-1$个月的收益大$w$

这样题目就转化为询问图中是否有非零环存在

于是我们找找正环(最长路)和负环(最短路)就好了


你发现其实正环和负环是等价的

所以你只要求其中一个就行了

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 105
int T,n,m,a[N][N],f1[N],f2[N],inf;
bool vis1[N],vis2[N],ok;
void spfa1(int x){
if(vis1[x]) ok=;
if(ok) return ;
vis1[x]=;
for(int i=;i<=n&&!ok;++i)
if(a[x][i]!=inf)
if(f1[i]>f1[x]+a[x][i])
f1[i]=f1[x]+a[x][i],spfa1(i);
vis1[x]=;
}
void spfa2(int x){
if(vis2[x]) ok=;
if(ok) return ;
vis2[x]=;
for(int i=;i<=n&&!ok;++i)
if(a[x][i]!=inf)
if(f2[i]<f2[x]+a[x][i])
f2[i]=f2[x]+a[x][i],spfa2(i);
vis2[x]=;
}
int main(){
scanf("%d",&T);
while(T--){
memset(a,,sizeof(a)); inf=a[][];
memset(f1,,sizeof(f1));
memset(f2,,sizeof(f2));
scanf("%d%d",&n,&m); ok=; f1[]=f2[]=;
for(int i=,u,v,w;i<=m;++i){
scanf("%d%d%d",&u,&v,&w);
a[u-][v]=w;
a[v][u-]=-w;
}
for(int i=;i<=n;++i) spfa1(i),spfa2(i);//自选一种
puts(ok?"false":"true");
}return ;
}

P2294 [HNOI2005]狡猾的商人(差分约束)的更多相关文章

  1. LUOGU P2294 [HNOI2005]狡猾的商人(差分约束)

    [传送门] (https://www.luogu.org/problemnew/show/P2294) 解题思路 差分约束.先总结一下差分约束,差分约束就是解决一堆不等式混在一起,左边是差的形式,右边 ...

  2. BZOJ 1202: [HNOI2005]狡猾的商人( 差分约束 )

    好像很多人用并查集写的... 前缀和, 则 sumt - sums-1 = v, 拆成2条 : sumt ≤ sums-1 + v, sums-1 ≤ sumt - v 就是一个差分约束, 建图跑SP ...

  3. luogu 2294 [HNOI2005]狡猾的商人 差分约束

    一个差分约束模型,只需判一下有没有负环即可. #include <bits/stdc++.h> #define N 103 #define M 2004 #define setIO(s) ...

  4. 洛谷P2294 [HNOI2005]狡猾的商人

    P2294 [HNOI2005]狡猾的商人 题目描述 输入输出格式 输入格式: 从文件input.txt中读入数据,文件第一行为一个正整数w,其中w < 100,表示有w组数据,即w个账本,需要 ...

  5. [luogu P2294] [HNOI2005]狡猾的商人

    [luogu P2294] [HNOI2005]狡猾的商人 题目描述 输入输出格式 输入格式: 从文件input.txt中读入数据,文件第一行为一个正整数w,其中w < 100,表示有w组数据, ...

  6. 题解——洛谷P2294 [HNOI2005]狡猾的商人(差分约束)

    裸的差分约束 dfs判断负环,如果有负环就false,否则就是true 注意有多组数据,数组要清空 #include <cstdio> #include <algorithm> ...

  7. 洛谷 [p2294] [HNOI2005] 狡猾的商人

    差分约束做法 又是一道转换成前缀和的差分约束题,已知从s月到t月的收入w,设数组pre[i]代表从开始到第i个月的总收入 构造差分不等式 $ pre[s-1]-pre[t]==w $ 为了满足松弛操作 ...

  8. P2294 [HNOI2005]狡猾的商人

    题目描述 输入输出格式 输入格式: 从文件input.txt中读入数据,文件第一行为一个正整数w,其中w < 100,表示有w组数据,即w个账本,需要你判断.每组数据的第一行为两个正整数n和m, ...

  9. Bzoj1202/洛谷P2294 [HNOI2005]狡猾的商人(带权并查集/差分约束系统)

    题面 Bzoj 洛谷 题解 考虑带权并查集,设\(f[i]\)表示\(i\)的父亲(\(\forall f[i]<i\)),\(sum[i]\)表示\(\sum\limits_{j=fa[i]} ...

随机推荐

  1. StringTokenizer工具类的使用

    package stringtokenizer.java; import java.util.StringTokenizer; public class stringtokenizer { publi ...

  2. (一)SQL -- 基础知识

    SQL是一个标准的数据库语言,是面向集合的描述性非过程化语言. 优点:功能强.效率高.简单易学易维护. 缺点:非过程化语言,大多数语言都是独立执行,与上下文无关,而大多数 应用都是一个完整的过程,显然 ...

  3. sqli-labs(32)

    0x1查看源代码 (1)代码关键点 很明显,代码中利用正则匹配将 [ /,'," ]这些三个符号都过滤掉了 preg_replace 0x2 宽字符注入 (1)前言 在mysql中,用于转义 ...

  4. [CSP-S模拟测试]:椎(线段树维护区间最值和单调栈)

    题目描述 虽不能至,心向往之. $Treap=Tree+Heap$ 椎$=$树$+$堆 小$\pi$学习了计算机科学中的数据结构$Treap$. 小$\pi$知道$Treap$指的是一种树. 小$\p ...

  5. 测试常用linux命令之系统监测

    top命令: cpu使用情况,内存等 du -hs: 查看目录大小 df -h :查看磁盘使用情况 free: 查看电脑整体内存使用情况 uptime:系统时间,用户数目等 vmstat:内存使用,进 ...

  6. 为Sublime Text 3设置优雅的字体

    本文使用的Sublime Text 3版本是3.2.1(build 3207),这个版本默认对中文的支持很糟糕,中国程序员很费眼睛,需要做一番设置. 首选需要在本机安装漂亮的字体,我们选用的是YaHe ...

  7. CSS注

    1.css3内容上下左右居中 .box { display:-moz-box; -moz-box-pack:center; -moz-box-align:center; display:-webkit ...

  8. Vue知识整理13:表单输入绑定(v-model)

    text:将输入框等表单,通过data变量实现数据绑定. textbox:数据绑定 3.checkbox和redio组件: 注意:data数据变量中,checkbox有可能会有多个结果,所以用数组: ...

  9. nginx排查502错误

    排查502错误1.查看/usr/local/nginx/conf/nginx.conf从而知道其错误日志在哪.重点查看其错误日志.2.如果是/tmp/dd.sock2017/05/01 18:48:3 ...

  10. 【漏洞学习】HOST 头攻击漏洞

    日期:2018-03-06 14:32:51 作者:Bay0net 0x01. 前言 在一般情况下,几个网站可能会放在同一个服务器上,或者几个 web 系统共享一个服务器,host 头来指定应该由哪个 ...