【题目大意】

总共n个农场,有以下三种描述:农场a比农场b至少多种植了c个单位的作物,农场a比农场b至多多种植了c个单位的作物,农场a与农场b种植的作物数一样多。问是否有可能性。

【思路】

农场a比农场b至少多种植了c个单位的作物:a>=b+c → b<=a-c,由a向b连一条-c的边。

农场a比农场b至多多种植了c个单位的作物:a<=b+c,由b向a连一条c的边。

农场a与农场b种植的作物数一样多:a=b → b<=a<=b,互相连一条0的边。

SPFA判断负环,要用DFS版本的来。DFS版本的直接参考了rausen学长的……真是快到飞起(;′⌒`)

 #include<bits/stdc++.h>
using namespace std;
const int MAXN=+;
struct edge
{
int to,len;
};
int n,m;
vector<edge> E[MAXN];
int vis[MAXN],dis[MAXN],flag; void addedge(int u,int v,int w)
{
E[u].push_back((edge){v,w});
} void init()
{
scanf("%d%d",&n,&m);
for (int i=;i<=m;i++)
{
int op,a,b,c;
scanf("%d",&op);
if (op==)//a-b>=c
{
scanf("%d%d%d",&a,&b,&c);
addedge(a,b,-c);
}
if (op==)
{
scanf("%d%d%d",&a,&b,&c);
addedge(b,a,c);
}
if (op==)
{
scanf("%d%d",&a,&b);
addedge(a,b,);addedge(b,a,);
}
}
} void spfa(int fr)
{
if (vis[fr])
{
flag=;
return;
}
vis[fr]=;
for (int i=;i<E[fr].size();i++)
{
int to=E[fr][i].to,len=E[fr][i].len;
if (dis[fr]+len<dis[to])
{
dis[to]=dis[fr]+len;
spfa(to);
if (flag) return;
}
}
vis[fr]=;
} void solve()
{
memset(vis,,sizeof(vis));
for (int i=;i<=n;i++)
{
spfa(i);
if (flag) break;
}
puts(flag?"No":"Yes");
} int main()
{
init();
solve();
return ;
}

【差分约束系统/DFS版SPFA】BZOJ3436-小K的农场的更多相关文章

  1. bzoj3436小K的农场

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

  2. BZOJ3436: 小K的农场(差分约束裸题&DFS优化判环)

    3436: 小K的农场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2111  Solved: 986[Submit][Status][Discus ...

  3. [bzoj3436]小K的农场_差分约束

    小K的农场 bzoj-3436 题目大意:给定n个点,每个节点有一个未知权值.现在有m个限制条件,形如:点i比点j至少大c,点i比点j至多大c或点i和点j相等.问是否可以通过给所有点赋值满足所有限制条 ...

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

    3436: 小K的农场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1575  Solved: 690[Submit][Status][Discus ...

  5. bzoj3436: 小K的农场(差分约束)

    3436: 小K的农场 题目:传送门 题解: 查分基础: t==1  a>=b+c t==2  b>=a-c t==3  a>=b+0 b>=a+0 跑最长路一A 代码: #i ...

  6. BZOJ3436 小K的农场

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

  7. BZOJ3436——小K的农场

    1.题意:大概是给一些制约限制,问是否存在合法解 2.分析:我们来观察这三个限制 农场a比农场b至少多种植了c个单位的作物     可以变成b 比 a至多多种了-c 农场a比农场b至多多种植了c个单位 ...

  8. BZOJ1202 [HNOI2005]狡猾的商人&&BZOJ3436小K的农场

    差分约束第三题 传送门: 很明显的差分约束,d[y]-d[x-1]>=v d[y]-d[x-1]<=v 根据这个建图然后跑bellman-ford就可以了. //BZOJ 1202 //b ...

  9. 洛谷P1993 小K的农场

    思路是差分约束+dfs版SPFA. 首先来思考差分约束的过程,将题目给出的式子进行转化: 农场a比农场b至少多种植了c个单位的作物, SPFA我们考虑跑最短路,那么要让SPFA中满足的式子就是if(d ...

随机推荐

  1. ES6简单总结

    1.变量声明let和const 我们都是知道在ES6以前,var关键字声明变量.无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部).这就是函数变量提升例如: functi ...

  2. 如何在ie6/ie7/ie8中实现iframe背景透明

    最近做了一个项目,涉及到ie8iframe背景透明的问题,做了老半天,才把它搞定的,现在把我的经历贴出来和大家分享: 众所周知的根据W3C CSS 2.1 规范规定,''''background-co ...

  3. 使用idea的的第一个坑-----javax.xml.ws.WebServiceRef

    新建项目启动报错的时候,一直报这个错,类找不到,郁闷了半天,都没百度到结果,后来发现是添加tomcat的时候jre没 指定..... 哈哈哈,太懵逼了,指定就ok了

  4. nginx自定义500,502,504错误页面无法跳转【转】

    1.自定一个页面,这个页面是一个链接地址可以直接访问的. 以下是nginx的配置: location / {            proxy_pass http://tomcat_app108;   ...

  5. 『实践』百度地图给map添加右键菜单(判断是否为marker)

      var map; var s;//经度 var w;//纬度 $(document).ready(function(){ $(".mune").load("jsp/c ...

  6. nvm npm node.js的关系

    nvm   npm  node.js都是用来构建reactNativ的项目 nvm管理node.j和npm版本的 node.js管理reactNative开发中所需要的代码库的 npm管理对应node ...

  7. mybatis待研究

    1. mapper 中_parameter 的含义,是 参数? 为什么?

  8. python网络编程--线程event

    一:线程event作用 Python提供了Event对象用于线程间通信,它是线程设置的信号标志,如果信号标志位真,则其他线程等待直到信号结束. Event对象实现了简单的线程通信机制,它提供了设置信号 ...

  9. Centos之帮助命令

    帮助命令man  (manual) 比如我们可以看下man命令的解释 [root@localhost ~]# man man MAN(1)                               ...

  10. (最大矩阵链乘)Matrix-chain product

    Matrix-chain product. The following are some instances. a)       <3, 5, 2, 1,10> b)       < ...