题意:有n头牛,编号为1到n,对于关系好的ml头牛,al和bl之间的距离不大于dl,关系差的md头牛,ad和bd之间的距离不大于dd,求第1头牛和第n头牛之间的距离

分析:这是一道差分约束系统的题目,先来看一下查分约束系统的资料

http://www.cnblogs.com/void/archive/2011/08/26/2153928.html

于是上述问题可以转换成最短路问题来求解,设d[i]为第1个顶点到第i个顶点的最短距离,d[al[i]]+dl[i]>=d[bl[i]],于是d[bl[i]]-d[al[i]]<=dl[i],同理可得d[ad[i]]-d[bd[i]]<=-dd[i],然后建立最短路来求解即可,因为存在负圈,所以用Bellman-Ford来求最短路

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
const int maxn=;
const int INF=<<;
int al[maxn],bl[maxn],dl[maxn]; //互相之间喜欢的牛
int ad[maxn],bd[maxn],dd[maxn]; //互相之间讨厌的牛
int n,ml,md;
int d[maxn]; //最短路 void solve()
{
fill(d,d+n+,INF);
d[]=;
for(int k=;k<n;k++)
{
for(int i=;i<n;i++)
{
if(d[i+]<INF)
d[i]=min(d[i+],d[i]);
}
for(int i=;i<ml;i++)
{
if(d[al[i]]<INF)
d[bl[i]]=min(d[bl[i]],d[al[i]]+dl[i]);
}
for(int i=;i<md;i++)
{
if(d[bd[i]]<INF)
d[ad[i]]=min(d[bd[i]]-dd[i],d[ad[i]]);
}
}
} int main()
{
while(cin>>n>>ml>>md)
{
for(int i=;i<ml;i++){
scanf("%d%d%d",&al[i],&bl[i],&dl[i]);
}
for(int i=;i<md;i++){
scanf("%d%d%d",&ad[i],&bd[i],&dd[i]);
}
solve();
int res=d[n];
if(d[]<){
cout<<"-1"<<endl;
}else if(res==INF){
cout<<"-2"<<endl;
}else
cout<<res<<endl;
}
return ;
}

POJ3169差分约束系统的更多相关文章

  1. poj3169 差分约束系统

    题意: 从1到n,n个数,从左向右依次排列. 给定两种形式的约束条件: 1.xi与yi的最大距离为dk 2.xi与yi的最小距离为dk 问满足这些限定条件的情况下,数1和n的最大距离是多少?(若约束条 ...

  2. 【图论】POJ-3169 差分约束系统

    一.题目 Description Like everyone else, cows like to stand close to their friends when queuing for feed ...

  3. UVA11478 Halum [差分约束系统]

    https://vjudge.net/problem/UVA-11478 给定一个有向图,每条边都有一个权值.每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的 ...

  4. BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 5395  Solved: 1750[Submit][Status ...

  5. ACM/ICPC 之 差分约束系统两道(ZOJ2770-POJ1201)

    当对问题建立数学模型后,发现其是一个差分方程组,那么问题可以转换为最短路问题,一下分别选用Bellmanford-SPFA解题 ZOJ2770-Burn the Linked Camp //差分约束方 ...

  6. POJ1201 Intervals(差分约束系统)

    与ZOJ2770一个建模方式,前缀和当作点. 对于每个区间[a,b]有这么个条件,Sa-Sb-1>=c,然后我就那样连边WA了好几次. 后来偷看数据才想到这题还有两个隐藏的约束条件. 这题前缀和 ...

  7. UVA 11374 Halum (差分约束系统,最短路)

    题意:给定一个带权有向图,每次你可以选择一个结点v 和整数d ,把所有以v为终点的边权值减少d,把所有以v为起点的边权值增加d,最后要让所有的边权值为正,且尽量大.若无解,输出结果.若可无限大,输出结 ...

  8. Burn the Linked Camp(bellman 差分约束系统)

    Burn the Linked Camp Time Limit: 2 Seconds      Memory Limit: 65536 KB It is well known that, in the ...

  9. zoj 2770 Burn the Linked Camp (差分约束系统)

    // 差分约束系统// 火烧连营 // n个点 m条边 每天边约束i到j这些军营的人数 n个兵营都有容量// Si表示前i个军营的总数 那么 1.Si-S(i-1)<=C[i] 这里 建边(i- ...

随机推荐

  1. phpstudy 安装memcached服务和memcache扩展

    memcached安装步骤: 首先,将下载好的memcahed解压到某个文件目录下,例如 C:\memcached 然后,在cmd里,输入"C:\memcached\memcached.ex ...

  2. php 10.2总

    注意事项 获取表单信息 <?php if($_POST["submit"]=="登录"){ echo "您输入的用户名为:".$_PO ...

  3. Struts2实现国际化

    public class I18nAction extends ActionSupport { private static final long serialVersionUID = -693330 ...

  4. ueditor 文本编辑器

    百度编辑器       压缩包在文件里 百度UEditor编辑器使用教程与使用方法 发布时间:2014-08-23 14:23:34.0 作者:青岛做网站 我们在做网站的时候,网站后台系统一般都会用到 ...

  5. mysql 时间字段的一些问题

    MySQl中有多种表示日期和时间的数据类型.其中YEAR表示年份,DATE表示日期,TIME表示时间,DATETIME和TIMESTAMP表示日期和实践.它们的对比如下: YEAR ,字节数为1,取值 ...

  6. tensorflow源代码方式安装

    本文介绍tensorflow源代码方式安装.安装的系统为 Ubuntu 15.04. 获取TensorFlow源代码 git clone --recurse-submodules https://gi ...

  7. 2015年4月27日---C语言:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!

    ---恢复内容开始--- 题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! 1.程序分析:字符共有256个.不同字符,图形不一样. 2.程序源代码: [code=c] #i ...

  8. javascript语句语义大全(5)

    1. var str = "abcd";alert(str.length);alert(str.charAt(0));//获取下标为0的字符alert(str.charCodeAt ...

  9. HDU1879--继续畅通工程(最小生成树)

    Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计 ...

  10. cc2530学习笔记

    case KEY_CHANGE://按键事件 case AF_INCOMING_MSG_CMD://接收数据事件,调用函数AF_DataRequest()接收数据 case ZDO_STATE_CHA ...