BZOJ_3436_小K的农场_差分约束

题意:

小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得
一些含糊的信息(共m个),以下列三种形式描述:农场a比农场b至少多种植了c个单位的作物,农场a比农场b至多
多种植了c个单位的作物,农场a与农场b种植的作物数一样多。但是,由于小K的记忆有些偏差,所以他想要知道存
不存在一种情况,使得农场的种植作物数量与他记忆中的所有信息吻合。
 
分析:
差分约束
对于1操作,b->a:c
对于2操作,a->b:-c
对于3操作,a->b:0 b->a:0
spfa求最长路判断有没有正环即可
因为图不一定连通所以要每个连通块都spfa一遍
 
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
#include <stdlib.h>
using namespace std;
#define N 10050
int Q[N],l,r;
int n,m,head[N],to[N<<1],nxt[N<<1],val[N<<1],cnt,vis[N];
int dep[N],dis[N],inq[N];
inline void add(int u,int v,int w)
{
to[++cnt]=v;nxt[cnt]=head[u];head[u]=cnt;val[cnt]=w;
}
void spfa(int s)
{
vis[s]=0;
int i;
l=r=0;
dis[s]=0;
Q[r++]=s;inq[s]=1;
while(l^r)
{
int x=Q[l++];inq[x]=0;if(l==n+1)l=0;
vis[x]=1;
for(i=head[x];i;i=nxt[i])
{
if(dis[to[i]]<dis[x]+val[i])
{
dep[to[i]]=dep[x]+1;
if(dep[to[i]]>n)
{
puts("No");exit(0);
}
dis[to[i]]=dis[x]+val[i];
if(!inq[to[i]])
{
Q[r++]=to[i];
inq[to[i]]=1;
if(r==n+1)r=0;
}
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
//memset(dis,0x3f,sizeof(dis));
int i,x,y,z,opt;
for(i=1;i<=m;i++)
{
scanf("%d",&opt);
if(opt==1)
{
scanf("%d%d%d",&x,&y,&z);
add(y,x,z);
}
else if(opt==2)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,-z);
}
else
{
scanf("%d%d",&x,&y);
add(x,y,0);
add(y,x,0);
}
}
for(i=1;i<=n;i++)if(!vis[i])spfa(i);
puts("Yes");
}

  

最新文章

  1. elasticsearch GIS空间查询问题解决
  2. [moka同学笔记]Yii2.0给一张表中增加一个属性
  3. 深究JS异步编程模型
  4. Safari5及以下版本不支持Date的横杠字符串格式
  5. UIButton属性
  6. 如何安装php?
  7. 深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换 [转]
  8. BZOJ_1611_[Usaco2008_Feb]_Meteor_Shower流星雨_(bfs)
  9. osgOcean测试
  10. 读书笔记 effective c++ Item 8 不要让异常(exceptions)离开析构函数
  11. 201521123117 《Java程序设计》第8周学习总结
  12. httpClient解决post请求重定向的问题
  13. 在vs2013下手把手创建/调用dll
  14. SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid 不正确
  15. jqprint控件使用
  16. nodejs基础(三)
  17. day11 大纲
  18. HDU 1465 不容易系列之一
  19. GoLang-字符串
  20. javascript弹层

热门文章

  1. sqlplus 登录数据库
  2. 前端工程师的修真秘籍(css、javascript和其它)
  3. spring中一些aware接口
  4. 初识Java——循环语句
  5. Java虚拟机-类文件
  6. SEO概念及SEO相关优化
  7. numpy用法归纳
  8. 第四次作业之jieba库的应用
  9. FastDfs上传图片
  10. Python_性能测试