题目大意

n个点 m条描述

  1. 农场 a 比农场 b 至少多种植了 c 个单位的作物。

  2. 农场 a 比农场 b 至多多种植了 c 个单位的作物。

  3. 农场 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的农场(差分约束)相关推荐

  1. BZOJ 3436: 小K的农场( 差分约束 )

    orz云神... 真的给跪了...BFS版spfa T 掉了...然后DFS版的就A了...我现在很迷茫.... 这就是个普通的差分约束... ---------------------------- ...

  2. BZOJ 3436 小K的农场 差分约束

    Description 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个 ...

  3. P1993 小K的农场 (差分约束)

    题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了c个单位的作 ...

  4. bzoj 3436: 小K的农场(差分约束)

    3436: 小K的农场 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1824  Solved: 810 [Submit][Status][Disc ...

  5. [BZOJ]3436: 小K的农场

    题解:  差分约束 模板题 差分约束系统  联系 最短路 对于操作1:$ a-b\geqslant c\rightarrow b\leqslant a-c $ 也就是说a向b连一条-c的边 对于操作2 ...

  6. bzoj3436小K的农场

    bzoj3436小K的农场 题意: n个数,知道m条关系:a-b≥c.a-b≤c或a==b.问是否存在满足所有关系的情况.n≤10000,m≤10000. 题解: 差分约束.因为只要求是否满足,因此最 ...

  7. P1993 小 K 的农场

    P1993 小 K 的农场 题解: 农场 a 比农场 b 至少多种植了 c 个单位的作物: 这句话说明:a - b > = c 转化可得 b - a < = - c add(a,b,-c) ...

  8. 【BZOJ - 3436】小K的农场(差分约束)

    题干: 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个),以下列三种形 ...

  9. 【差分约束】POJ3159/LG P1993 小K的农场

    终于把差分约束刷完了!!,这些题的套路都是很类似的 题目描述小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种 ...

  10. 洛谷P1993 小K的农场(差分约束)

    [题目描述] 小K在MC里面建立很多很多的农场,总共 n n n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共 m m m个),以下列三种形式描述: 农场 a a ...

最新文章

  1. oracle ORA-00119和ORA-00132解决方法
  2. Web三大组件的注册——Servlet、Filter、Listener(监听三大作用域: ServletContext、HttpSession、ServletRequest )
  3. MATLAB知识点1
  4. mysql 乐观锁 脏读_mysql 丢失更新1和2、脏读、不可重复读和幻读 事务隔离级别 悲观锁 乐观锁...
  5. 废掉一个产品经理最常见的方式,就是天天画原型
  6. random_state 参数
  7. CSS图片裁剪Clip
  8. TIOBE 2 月编程语言排行榜:Objective-C 的出路在何方?
  9. Starling移动平台开发初体验
  10. 多种方法去除按钮以及链接点击时虚线
  11. Xshell 7免费版下载及安装
  12. 秒开路由sam1_野狼SAM机架精编版V1.0官方版-独木成林
  13. word插入页码后只有当前页有页码
  14. 炫界 (667) -(回应骑两小)_西番莲小棚架高产优质栽培技术,既能高产,又能保证质量...
  15. Phyton Socket发送接收Modbus数组
  16. 哪个学校计算机考研945,2018年郑州大学945软件工程专业基础综合考研复习资料...
  17. 在进化计算中,软件进行元基编码的新陈代谢方式 V0. 1. 0
  18. 如何快速判断一个文件是否为病毒
  19. user.has_perm(perm) 中参数 perm 的格式问题 - Django
  20. Linux命令之curl命令

热门文章

  1. Apollo 1 融合 Spring 的三个入口
  2. 第1章 编程心理门槛
  3. python中一切皆是对象,对象都是在堆上存放的,一切都是指针
  4. redis和memcache的对比
  5. 《OSPF和IS-IS详解》一第6章 链路状态数据库同步6.1 OSPF数据库同步
  6. MairDB 修改表(三)
  7. 用Solr4.10实在全文检索
  8. svn在linux下的使用(svn命令)[转]
  9. 使用扩展存储过程xp_regread读取注册表信息
  10. php软件开发--tp5