小K的农场(差分约束)
题目大意
n个点 m条描述
农场 a 比农场 b 至少多种植了 c 个单位的作物。
农场 a 比农场 b 至多多种植了 c 个单位的作物。
- 农场 a 与农场 b 种植的作物数一样多。
题解
差分约束裸题
可以把m条描述转换成一张图
ai-bi≥c--->bi-ai≤-c ai向bi连边权值为-c
ai-bi≤c bi向ai连边 权值为c
ai-bi≥0并且ai-bi≤0所以ai和bi之间连双向边....
开始我不明白为什么要虚拟一个0点...原来图可能不连通....
判断负环...要用spfa的dfs判断 效率更高
代码
#include<iostream> #include<cstring> #include<cstdio> #define mmx 100003 using namespace std;int n,m,a,b,c,od,flag,sumedge; int dis[mmx],vis[mmx],head[mmx];inline int read(){register char ch=getchar();register int x=0,f=1;while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&& ch<='9'){x=x*10+ch-'0';ch=getchar();}return f*x; }struct Edge{int x,y,z,nxt;Edge(int x=0,int y=0,int z=0,int nxt=0):x(x),y(y),z(z),nxt(nxt){} }edge[mmx<<1];inline void add(int x,int y,int z){edge[++sumedge]=Edge(x,y,z,head[x]);head[x]=sumedge; }inline void spfa(int now){vis[now]=1;for(int i=head[now];i;i=edge[i].nxt){int v=edge[i].y ;if(dis[v]>dis[now]+edge[i].z){dis[v]=dis[now]+edge[i].z;if(vis[v]){flag=1;return;}spfa(v);}}vis[now]=0; }int main(){n=read();m=read();for(register int i=1;i<=m;i++){od=read();a=read();b=read();if(od==1){c=read();add(a,b,-1*c);}if(od==2){c=read();add(b,a,c);}if(od==3){add(a,b,0);add(b,a,0);}}for(register int i=1;i<=n;i++)add(0,i,0);memset(dis,127/3,sizeof(dis));dis[0]=0;spfa(0);if(flag)printf("No\n");else printf("Yes\n");return 0; }
转载于:https://www.cnblogs.com/zzyh/p/7388534.html
小K的农场(差分约束)相关推荐
- BZOJ 3436: 小K的农场( 差分约束 )
orz云神... 真的给跪了...BFS版spfa T 掉了...然后DFS版的就A了...我现在很迷茫.... 这就是个普通的差分约束... ---------------------------- ...
- BZOJ 3436 小K的农场 差分约束
Description 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个 ...
- P1993 小K的农场 (差分约束)
题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了c个单位的作 ...
- bzoj 3436: 小K的农场(差分约束)
3436: 小K的农场 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1824 Solved: 810 [Submit][Status][Disc ...
- [BZOJ]3436: 小K的农场
题解: 差分约束 模板题 差分约束系统 联系 最短路 对于操作1:$ a-b\geqslant c\rightarrow b\leqslant a-c $ 也就是说a向b连一条-c的边 对于操作2 ...
- bzoj3436小K的农场
bzoj3436小K的农场 题意: n个数,知道m条关系:a-b≥c.a-b≤c或a==b.问是否存在满足所有关系的情况.n≤10000,m≤10000. 题解: 差分约束.因为只要求是否满足,因此最 ...
- P1993 小 K 的农场
P1993 小 K 的农场 题解: 农场 a 比农场 b 至少多种植了 c 个单位的作物: 这句话说明:a - b > = c 转化可得 b - a < = - c add(a,b,-c) ...
- 【BZOJ - 3436】小K的农场(差分约束)
题干: 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个),以下列三种形 ...
- 【差分约束】POJ3159/LG P1993 小K的农场
终于把差分约束刷完了!!,这些题的套路都是很类似的 题目描述小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种 ...
- 洛谷P1993 小K的农场(差分约束)
[题目描述] 小K在MC里面建立很多很多的农场,总共 n n n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共 m m m个),以下列三种形式描述: 农场 a a ...
最新文章
- oracle ORA-00119和ORA-00132解决方法
- Web三大组件的注册——Servlet、Filter、Listener(监听三大作用域: ServletContext、HttpSession、ServletRequest )
- MATLAB知识点1
- mysql 乐观锁 脏读_mysql 丢失更新1和2、脏读、不可重复读和幻读 事务隔离级别 悲观锁 乐观锁...
- 废掉一个产品经理最常见的方式,就是天天画原型
- random_state 参数
- CSS图片裁剪Clip
- TIOBE 2 月编程语言排行榜:Objective-C 的出路在何方?
- Starling移动平台开发初体验
- 多种方法去除按钮以及链接点击时虚线
- Xshell 7免费版下载及安装
- 秒开路由sam1_野狼SAM机架精编版V1.0官方版-独木成林
- word插入页码后只有当前页有页码
- 炫界 (667) -(回应骑两小)_西番莲小棚架高产优质栽培技术,既能高产,又能保证质量...
- Phyton Socket发送接收Modbus数组
- 哪个学校计算机考研945,2018年郑州大学945软件工程专业基础综合考研复习资料...
- 在进化计算中,软件进行元基编码的新陈代谢方式 V0. 1. 0
- 如何快速判断一个文件是否为病毒
- user.has_perm(perm) 中参数 perm 的格式问题 - Django
- Linux命令之curl命令