题解——洛谷P2294 [HNOI2005]狡猾的商人(差分约束)
裸的差分约束
dfs判断负环,如果有负环就false,否则就是true
注意有多组数据,数组要清空
#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstring>
#include <iostream>
using namespace std;
const int MAXN = ;
const int MAXM = ;
int cnt=,u[MAXM],v[MAXM],w[MAXM],first[MAXN],next[MAXM];
int vis[MAXN];
int inq[MAXN],dis[MAXN],f[MAXN];
int n,m;
void addedge(int ux,int vx,int wx){
++cnt;
u[cnt]=ux;
v[cnt]=vx;
w[cnt]=wx;
next[cnt]=first[ux];
first[ux]=cnt;
}
bool flag=false;
void spfa(int ux){
vis[ux]=;
for(int i=first[ux];i;i=next[i]){
if(dis[ux]+w[i]<dis[v[i]]){
if(vis[v[i]]){
flag=true;
return;
}
dis[v[i]]=dis[ux]+w[i];
spfa(v[i]);
}
}
vis[ux]=;
return;
}
/*bool spfa(int s,int t){
queue<int> q;
q.push(s);
dis[s]=0;
inq[s]=1;
vis[s]=1;
f[s]=1;
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=0;
f[u]=1;
for(int i=first[u];i;i=next[i]){
if(w[i]+dis[u]<dis[v[i]]){
dis[v[i]]=w[i]+dis[u];
if(!vis[v[i]]){
vis[v[i]]=1;
inq[v[i]]++;
q.push(v[i]);
if(inq[v[i]]>=n)
return false;
}
}
}
}
return true;
}*/
int main(){
int T,sx,tx,vx;
cin>>T;
for(int pp=;pp<=T;pp++){
flag=false;
cin>>n>>m;
cnt=;
memset(dis,0x3f,sizeof(dis));
memset(first,,sizeof(first));
memset(vis,,sizeof(vis));
memset(f,,sizeof(f));
for(int i=;i<=m;i++){
cin>>sx>>tx>>vx;
addedge(sx-,tx,vx);
addedge(tx,sx-,-vx);
}
for(int i=;i<=n;i++){
if(!f[i]){
dis[i]=;
spfa(i);
if(flag){
printf("false\n");
break;
}
}
}
if(!flag){
printf("true\n");
}
}
return ;
}
题解——洛谷P2294 [HNOI2005]狡猾的商人(差分约束)的更多相关文章
- 洛谷P2294 [HNOI2005]狡猾的商人
		
P2294 [HNOI2005]狡猾的商人 题目描述 输入输出格式 输入格式: 从文件input.txt中读入数据,文件第一行为一个正整数w,其中w < 100,表示有w组数据,即w个账本,需要 ...
 - LUOGU  P2294 [HNOI2005]狡猾的商人(差分约束)
		
[传送门] (https://www.luogu.org/problemnew/show/P2294) 解题思路 差分约束.先总结一下差分约束,差分约束就是解决一堆不等式混在一起,左边是差的形式,右边 ...
 - Bzoj1202/洛谷P2294 [HNOI2005]狡猾的商人(带权并查集/差分约束系统)
		
题面 Bzoj 洛谷 题解 考虑带权并查集,设\(f[i]\)表示\(i\)的父亲(\(\forall f[i]<i\)),\(sum[i]\)表示\(\sum\limits_{j=fa[i]} ...
 - 洛谷 [p2294] [HNOI2005] 狡猾的商人
		
差分约束做法 又是一道转换成前缀和的差分约束题,已知从s月到t月的收入w,设数组pre[i]代表从开始到第i个月的总收入 构造差分不等式 $ pre[s-1]-pre[t]==w $ 为了满足松弛操作 ...
 - BZOJ 1202: [HNOI2005]狡猾的商人( 差分约束 )
		
好像很多人用并查集写的... 前缀和, 则 sumt - sums-1 = v, 拆成2条 : sumt ≤ sums-1 + v, sums-1 ≤ sumt - v 就是一个差分约束, 建图跑SP ...
 - luogu 2294 [HNOI2005]狡猾的商人 差分约束
		
一个差分约束模型,只需判一下有没有负环即可. #include <bits/stdc++.h> #define N 103 #define M 2004 #define setIO(s) ...
 - [luogu P2294] [HNOI2005]狡猾的商人
		
[luogu P2294] [HNOI2005]狡猾的商人 题目描述 输入输出格式 输入格式: 从文件input.txt中读入数据,文件第一行为一个正整数w,其中w < 100,表示有w组数据, ...
 - P2294 [HNOI2005]狡猾的商人(差分约束)
		
P2294 [HNOI2005]狡猾的商人 对于每个$(x,y,w)$,连边$(x-1,y,w),(y,x-1,-w)$,表示前$y$个月的收益比前$x-1$个月的收益大$w$ 这样题目就转化为询问图 ...
 - P2294 [HNOI2005]狡猾的商人
		
题目描述 输入输出格式 输入格式: 从文件input.txt中读入数据,文件第一行为一个正整数w,其中w < 100,表示有w组数据,即w个账本,需要你判断.每组数据的第一行为两个正整数n和m, ...
 
随机推荐
- Yii ActiveRecord生命周期
 - WEB应用程序:AJAX全套
			
概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...
 - 20165305 苏振龙《Java程序设计》第八周学习总结
			
第十二章 •如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中. •如果想要加装主线程,就要创建 Thread 实例,要 ...
 - (Review cs231n) Gradient Calculation and Backward
			
---恢复内容开始--- 昨日之补充web. 求解下图的梯度的流动,反向更新参数的过程,表示为 输入与损失梯度的关系,借助链式法则,当前输入与损失之间的梯度关系为局部梯度乘以后一层的梯度. ---恢复 ...
 - Poj3253 Fence Repair (优先队列)
			
Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 67319 Accepted: 22142 De ...
 - [转载]WeeksInAYear、WeeksInYear、DaysInAYear、DaysInAMonth、DaysInYear、DaysInMonth - 获取指定年月的周、日数
			
DateUtils.DaysInYear(); DateUtils.DaysInMonth(); DateUtils.DaysInAYear(); DateUtils.DaysInAMonth(); ...
 - .NET 常用ORM之iBatis
			
ibatis 一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目,到后面发展的版本叫MyBatis但都是指的同一个东西.最初侧重 ...
 - The Little Prince-12/13
			
The Little Prince-12/13 突然发现:这应该是一封情书~ 我那时什么也不懂!我应该根据她的行为,而不是根据她的话来判断她. 她使我的生活芬芳多彩,我真不该离开她跑出来.我本应该猜出 ...
 - 关于functools模块的wraps装饰器用途
			
测试环境:Python3.6.2 + win10 + Pycharm2017.3 装饰器之functools模块的wraps的用途: 首先我们先写一个装饰器 # 探索functools模块wraps ...
 - P2336 [SCOI2012]喵星球上的点名(后缀自动机+莫队+dfs序)
			
P2336 [SCOI2012]喵星球上的点名 名字怎么存?显然是后缀自动机辣 询问点到多少个喵喵喵其实就是 查询后缀自动机上parent树的一个子树 于是我们考虑莫队 怎么树上莫队呢 我们用dfs序 ...