POJ3169差分约束系统
题意:有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差分约束系统的更多相关文章
- poj3169 差分约束系统
题意: 从1到n,n个数,从左向右依次排列. 给定两种形式的约束条件: 1.xi与yi的最大距离为dk 2.xi与yi的最小距离为dk 问满足这些限定条件的情况下,数1和n的最大距离是多少?(若约束条 ...
- 【图论】POJ-3169 差分约束系统
一.题目 Description Like everyone else, cows like to stand close to their friends when queuing for feed ...
- UVA11478 Halum [差分约束系统]
https://vjudge.net/problem/UVA-11478 给定一个有向图,每条边都有一个权值.每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的 ...
- BZOJ 2330: [SCOI2011]糖果 [差分约束系统] 【学习笔记】
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 5395 Solved: 1750[Submit][Status ...
- ACM/ICPC 之 差分约束系统两道(ZOJ2770-POJ1201)
当对问题建立数学模型后,发现其是一个差分方程组,那么问题可以转换为最短路问题,一下分别选用Bellmanford-SPFA解题 ZOJ2770-Burn the Linked Camp //差分约束方 ...
- POJ1201 Intervals(差分约束系统)
与ZOJ2770一个建模方式,前缀和当作点. 对于每个区间[a,b]有这么个条件,Sa-Sb-1>=c,然后我就那样连边WA了好几次. 后来偷看数据才想到这题还有两个隐藏的约束条件. 这题前缀和 ...
- UVA 11374 Halum (差分约束系统,最短路)
题意:给定一个带权有向图,每次你可以选择一个结点v 和整数d ,把所有以v为终点的边权值减少d,把所有以v为起点的边权值增加d,最后要让所有的边权值为正,且尽量大.若无解,输出结果.若可无限大,输出结 ...
- Burn the Linked Camp(bellman 差分约束系统)
Burn the Linked Camp Time Limit: 2 Seconds Memory Limit: 65536 KB It is well known that, in the ...
- zoj 2770 Burn the Linked Camp (差分约束系统)
// 差分约束系统// 火烧连营 // n个点 m条边 每天边约束i到j这些军营的人数 n个兵营都有容量// Si表示前i个军营的总数 那么 1.Si-S(i-1)<=C[i] 这里 建边(i- ...
随机推荐
- JPA 系列教程3-单向多对一
JPA中的@ManyToOne 主要属性 - name(必需): 设定"many"方所包含的"one"方所对应的持久化类的属性名 - column(可选): 设 ...
- LightOJ 1336 Sigma Function 算数基本定理
题目大意:f(n)为n的因子和,给出 n 求 1~n 中f(n)为偶数的个数. 题目思路:算数基本定理: n=p1^e1*p2^e1 …… pn^en (p为素数): f(n)=(1+p1+p1^2+ ...
- selenuim,qtp,loadrunner,jmeter有何区别,想学个脚本语言python和测试工具应该从哪里入门呢。
selenium和qtp是 功能的自动化测试,loadrunner和jmeter是性能的自动化测试 selenium要求代码能力比较高,适合用python,QTP一般用VBS,loadrunner一般 ...
- Listview的OnScrollListener的滑动监听实现分页加载
//---------------主布局文件---------------------------- <ListView android:layout_width="fill_pare ...
- MVC工作流程
1 浏览者 => 调用控制器,对它发出指令 2 控制器 => 按照指令选取一个合适的模型 3 模型 => 按控制器指令取出相应的数据 4 控制器 => 按指令选取 ...
- iis配置,客户端可以下载apk,或者播放视频
1.选中网站,在右侧找到iis中的MINE类型 2.点击最右侧的添加按钮,提示输入扩展名 3. apk:在弹出的添加窗口里的文件扩展名输入:APK在MIME类型输入:application/vnd.a ...
- 고 해서: 表示在做B的各种理由中, A是代表性的理由
1. 날씨도 좋고해서 산책이나 하려고 해요. 2. 할 일도 없고해서 일찍 돌어왔어요. 3. 기분도 우울하고 해서 친구란 술 마시기로 했어요. 可以加过去式和将来时使用 1. 수업도 끝 ...
- jvm attach
http://ayufox.iteye.com/blog/655761 管道通信
- didMoveToSuperView 引发的思考
1. - (void)didMoveToSuperview 通知视图已经移动到一个新的父视图中 2. /**系统自动调用(留给子类去实现)**/ - (void)didAddSubview:(UIVi ...
- gnu make
http://stackoverflow.com/questions/448910/makefile-variable-assignment 更加全面的介绍 http://blog.csdn.net/ ...