其实很早以前就打好了,但一直忘记写了。

  也就是差分约束的模板题。

  关于差分约束,也就是用来求关于一些不等式互相约束算出最优解。

  推荐一个讲的很好的博客:http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html

  可以通过一个三角形不等式来搞一下:

  B - A <= c      (1)

  C - B <= a      (2)
  C - A <= b      (3)
  如果我们想要知道C - A的最大值,通过(1) + (2),可以得到 C - A <= a + c,所以这个问题其实就是求min{b, a+c}。
  所以这题只需要转换一下不等式,用SPFA来判负环(用DFS比较快)
  CODE

#include<cstdio>
#include<cstring>
using namespace std;
const int N=;
struct data
{
int to,next,v;
}e[N];
int head[N],dis[N],n,m,opt,i,j,x,y,z,k,h,t;
bool flag=,vis[N];
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
inline void add(int x,int y,int z)
{
e[++k].to=y; e[k].v=z; e[k].next=head[x]; head[x]=k;
}
inline void SPFA(int k)
{
vis[k]=;
for (int i=head[k];i!=-;i=e[i].next)
if (dis[e[i].to]>dis[k]+e[i].v)
{
if (vis[e[i].to]) { flag=; return; } else dis[e[i].to]=dis[k]+e[i].v,SPFA(e[i].to);
}
vis[k]=;
}
int main()
{
read(n); read(m);
memset(e,-,sizeof(e));
memset(head,-,sizeof(head));
for (i=;i<=m;++i)
{
read(opt);
if (opt==) read(x),read(y),read(z),add(x,y,-z);
if (opt==) read(x),read(y),read(z),add(y,x,z);
if (opt==) read(x),read(y),add(x,y,),add(y,x,);
}
for (i=;i<=n;++i)
{
if (flag) break;
memset(dis,,sizeof(dis));
SPFA(i);
}
if (flag) puts("No"); else puts("Yes");
return ;
}
  

最新文章

  1. prometheus监控系统
  2. Linux 中的数值计算和符号计算
  3. CentOS搭建NodeJS环境
  4. CSS实现特殊效果
  5. 对Json字符串进行格式化显示
  6. SQL Server Management Studio Keyboard shortcuts
  7. [openMP] OpenMP在visual studio和mac上的配置
  8. Linux学习之awk命令
  9. h5的api dom全屏展示
  10. iOS之AFSecurityPolicy
  11. 在QEMU中调试ARM程序【转】
  12. WEB项目挂载到IIS session过期
  13. C语音输出前100个回文素数,每行10个,适当对齐
  14. shell for循环 多个变量
  15. pandas的Panel类型dtype
  16. ABAP-FTP-配置
  17. layui表单验证
  18. 【原】使用Tkinter绘制GUI并结合Matplotlib实现交互式绘图
  19. jquery自定义类的封装
  20. Spring集成Swagger,Java自动生成Api文档

热门文章

  1. fastjson 反序列化漏洞利用总结
  2. the database needs something to populate existing rows.
  3. 在PHP中避免一些代码中的坏味道
  4. Hibernate 拦截器
  5. 更改 Windows VM 的可用性集
  6. poj_3253 Fence Repair
  7. Sql server bulk insert
  8. C# post json 匿名类 序列化
  9. PyQt5--QCheckBox
  10. 【Ansible 文档】【译文】Ad-Hoc 命令介绍