POJ 3169 Layout (spfa+差分约束)
题目链接:http://poj.org/problem?id=3169
题目大意:n头牛,按编号1~n从左往右排列,可以多头牛站在同一个点,给出ml行条件,每行三个数a b c表示dis[b]-dis[a]<=c,接下来有md行条件,每行三个数a b c,表示dis[b]-dis[a]>=c。求出出第一头牛和第n头牛的最大可能距离。若不可能把所有牛排成一排即条件有矛盾,则输出“-1”,若第一头牛和第n头牛的距离可以无限大,则输出“-2”。
解题思路:第二道差分约束的题目。根据题目给出的三个约束条件:
①dis[B]-dis[A]<=C
②dis[B]-dis[A]>=C → dis[A]-dis[B]<=-C
③dis[A]-dis[B]<=0
建图,然后同样的,因为要使距离尽可能大,所以if(dis[i]-dis[k]>cost[k][i]) dis[i]=dis[k]+cost[k][i]。
当出现负环,则说明该图矛盾,输出“-1”,当dis[n]==INF说明1和n之间距离可以无穷大,输出“-2”,其他时候输出dis[n]-dis[1]。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
const int N=1e3+;
const int INF=0x3f3f3f3f;
const int MAXN=3e4+; struct node{
int to,w,next;
}edge[MAXN]; int n,idx;
int head[N],dis[N],qcnt[N];
bool vis[N]; void init(){
idx=;
memset(head,-,sizeof(head));
} void addedge(int u,int v,int w){
edge[idx].w=w;
edge[idx].to=v;
edge[idx].next=head[u];
head[u]=idx;
idx++;
} bool spfa(int s) {
memset(dis,0x3f,sizeof(dis));
dis[s]=;
queue<int>q;
q.push(s);
while(!q.empty()){
int k=q.front();
q.pop();
vis[k]=false;
for(int i=head[k];i!=-;i=edge[i].next){
node t=edge[i];
if(dis[k]+t.w<dis[t.to]){
dis[t.to]=dis[k]+t.w;
if(!vis[t.to]){
q.push(t.to);
qcnt[t.to]++;
if(qcnt[t.to]>=n)
return false;
vis[t.to]=true;
}
}
}
}
return true;
} int main(){
init();
int ml,md;
scanf("%d%d%d",&n,&ml,&md);
int a,b,c;
for(int i=;i<=ml;i++){
scanf("%d%d%d",&a,&b,&c);
addedge(a,b,c); //b-a<=c
}
for(int i=;i<=md;i++){
scanf("%d%d%d",&a,&b,&c);
addedge(b,a,-c); //b-a>=c → a-b<=-c都改成小于的形式
}
for(int i=;i<=n-;i++){
addedge(i+,i,); //默认的dis[i+1]-dis[i]>=0
}
if(!spfa())
puts("-1");
else if(dis[n]==INF)
puts("-2");
else
printf("%d\n",dis[n]-dis[]);
return ;
}
POJ 3169 Layout (spfa+差分约束)的更多相关文章
- POJ 3169 Layout (spfa+差分约束)
题目链接:http://poj.org/problem?id=3169 差分约束的解释:http://www.cnblogs.com/void/archive/2011/08/26/2153928.h ...
- poj 3169 Layout(差分约束+spfa)
题目链接:http://poj.org/problem?id=3169 题意:n头牛编号为1到n,按照编号的顺序排成一列,每两头牛的之间的距离 >= 0.这些牛的距离存在着一些约束关系:1.有m ...
- (简单) POJ 3169 Layout,差分约束+SPFA。
Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ ...
- POJ 3169 Layout 【差分约束】+【spfa】
<题目链接> 题目大意: 一些母牛按序号排成一条直线.有两种要求,A和B距离不得超过X,还有一种是C和D距离不得少于Y,问可能的最大距离.如果没有最大距离输出-1,如果1.n之间距离任意就 ...
- poj 3169 Layout (差分约束)
3169 -- Layout 继续差分约束. 这题要判起点终点是否连通,并且要判负环,所以要用到spfa. 对于ML的边,要求两者之间距离要小于给定值,于是构建(a)->(b)=c的边.同理,对 ...
- POJ 3169 Layout(差分约束+最短路)题解
题意:有一串数字1~n,按顺序排序,给两种要求,一是给定u,v保证pos[v] - pos[u] <= w:二是给定u,v保证pos[v] - pos[u] >= w.求pos[n] - ...
- poj 3169 Layout(差分约束)
Layout Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6549 Accepted: 3168 Descriptio ...
- POJ 3167 Layout(差分约束)
题面 Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 ...
- POJ 3169 Layout (差分约束系统)
Layout 题目链接: Rhttp://acm.hust.edu.cn/vjudge/contest/122685#problem/S Description Like everyone else, ...
- O - Layout(差分约束 + spfa)
O - Layout(差分约束 + spfa) Like everyone else, cows like to stand close to their friends when queuing f ...
随机推荐
- 【BZOJ1088】扫雷(递推)
[BZOJ1088]扫雷(递推) 题面 BZOJ 题解 忽然发现这就是一道逗逼题. 只需要枚举一下第一个是什么,后面都能够推出来了.. #include<iostream> using n ...
- 【BZOJ2763】飞行路线(最短路)
[BZOJ2763]飞行路线(最短路) 题面 BZOJ Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标 ...
- 洛谷P1268 树的重量 【构造 + 枚举】
题目描述 树可以用来表示物种之间的进化关系.一棵"进化树"是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异.现在,一个重要的问题是,根据物种之间的距离 ...
- MyBatis之自查询,使用 递归实现 N级联动
A:首先先看下一个简单的面试题 斐波那契数列 计算数组{1,1,2,3,5,8.......} 第30位值 规律:1 1 从第三项开始,每一项都是前两项之和 有两种实现方式 第一种方式: public ...
- Android NDK 编译选项设置[zhuan]
http://crash.163.com/#news/!newsId=24 在Android NDK开发中,有两个重要的文件:Android.mk和Application.mk,各尽其责,指导编译器如 ...
- Android Studio常用的快捷键
罗列一些常用的快捷键 全局快捷键(比较重要的) ALT + ENTER 工程快速修复 CTRL + SHIFT + A 快速查找 CTRL + ALT + L (Win) 格式化代码(我的锁屏的快 ...
- poj 1743 后缀数组 最长不重叠子串
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 30941 Accepted: 10336 D ...
- Qt ------ Thread Affinity (QObject::moveToThread: Cannot move objects with a parent)
简单的说,每个QObject的对象,都和某个创建对象所在的线程关联,如果把对象通过 moveToThread 移动到其他线程,这个对象不能有父对象,否则会出现 QObject::moveToThrea ...
- scrollbar样式
.friends-list-content { height: 520px; overflow-y: scroll; } .friends-list-content::-webkit-scrollba ...
- Eclipse错误笔记!
1.ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 JDWP exit error ...