POJ3169
题目链接:http://poj.org/problem?id=3169
AC思路:
spfa算法。
设各牛的位置为x[ ]。
对于感情好的牛,即第2到ML+1行:A B D, 有x[B] - x[A] <=D.而对于感情不好的牛,即第ML+2到ML+MD+1行: A B D, 则有x[B] - x[A] >=D,可以转化为x[A] - x[B] <= -D.
这是一个差分约束题,第一类式子x[B] - x[A] <=D可以看成是从点B到点A的边权为D,而第二类式子也可以转换成x[A] - x[B] <= -D,看成是从点A到点B的负权边。
最终目的是要求 x[N] - x[1]的最大值,其实就是从N点出发到 1点的单源最短路问题。理解了差分约束这个概念,这道题就不难了。
AC代码:
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxv=+,maxe=+;
const int inf=0x7ffffff;
int edgecount,N;
int head[maxv],d[maxv],visitcount[maxv];
bool inq[maxv];
queue<pair<int,int> > q;
struct edge{
int from,to,val,next;
edge(){}
edge(int _f,int _t,int _v,int _n){
from=_f,to=_t,val=_v,next=_n;
}
}es[maxe];
void addedge(int from,int to,int val){
es[edgecount]=edge(from,to,val,head[from]);
// printf("es[%d] = (%d,%d,%d,%d)\n",edgecount,from,to,val,head[from]);
head[from]=edgecount++;
}
bool spfa(int s){
for(int i=;i<=N;i++){
d[i]=inf;
inq[i]=(i==s);
visitcount[i]=;
}
d[s]=;
q.push(make_pair(d[s],s));
while(!q.empty()){
int dist=q.front().first,u=q.front().second;
q.pop();
inq[u]=false;
if(visitcount[u]++>N) return true;
for(int e=head[u];e!=-;e=es[e].next){
int t=es[e].to,value=es[e].val;
if(d[t]>d[u]+value){
d[t]=d[u]+value;
if(!inq[t]){
inq[t]=true;
q.push(make_pair(d[t],t));
}
}
}
}
return false;
}
int main()
{
memset(head,-,sizeof(head));
int ML,MD,A,B,D; edgecount=;
scanf("%d%d%d",&N,&ML,&MD);
while(ML--){
scanf("%d%d%d",&A,&B,&D);
addedge(B,A,D);
}
while(MD--){
scanf("%d%d%d",&A,&B,&D);
addedge(A,B,-D);
} if(spfa(N)) printf("-1\n");
else if(d[]==inf) printf("-2\n");
else printf("%d\n",d[]);
// for(int i=1;i<=N;i++) printf("%d\n",d[i]);
return ;
}
POJ3169的更多相关文章
- POJ3169 Layout(差分约束系统)
POJ3169 Layout 题意: n头牛编号为1到n,按照编号的顺序排成一列,每两头牛的之间的距离 >= 0.这些牛的距离存在着一些约束关系:1.有ml组(u, v, w)的约束关系,表示牛 ...
- POJ-3169 Layout---差分约束系统+Bellman
题目链接: https://vjudge.net/problem/POJ-3169 题目大意: 一些母牛按序号排成一条直线.有两种要求,A和B距离不得超过X,还有一种是C和D距离不得少于Y,问可能的最 ...
- 【图论】POJ-3169 差分约束系统
一.题目 Description Like everyone else, cows like to stand close to their friends when queuing for feed ...
- POJ-3169 Layout 最短路 差分约束
题目链接:https://cn.vjudge.net/problem/POJ-3169 题意 Farmer John手下的一些牛有自己喜欢的牛,和讨厌的牛 喜欢的牛之间希望距离在给定距离D之内 讨厌的 ...
- POJ-3169 Layout (差分约束+SPFA)
POJ-3169 Layout:http://poj.org/problem?id=3169 参考:https://blog.csdn.net/islittlehappy/article/detail ...
- [USACO2005][POJ3169]Layout(差分约束)
题目:http://poj.org/problem?id=3169 题意:给你一组不等式了,求满足的最小解 分析: 裸裸的差分约束. 总结一下差分约束: 1.“求最大值”:写成"<=& ...
- POJ3169 Layout
Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ ...
- poj3169 最短路(差分约束)
题意:一个农夫有n头牛,他希望将这些牛按照编号 1-n排成一条直线,允许有几头牛站在同一点,但是必须按照顺序,有一些牛关系比较好,希望站的距离不超过某个值,而有一些牛关系不太好,所以希望站的距离大于等 ...
- 【POJ3169 】Layout (认真的做差分约束)
Layout Description Like everyone else, cows like to stand close to their friends when queuing for ...
- POJ3169差分约束系统
题意:有n头牛,编号为1到n,对于关系好的ml头牛,al和bl之间的距离不大于dl,关系差的md头牛,ad和bd之间的距离不大于dd,求第1头牛和第n头牛之间的距离 分析:这是一道差分约束系统的题目, ...
随机推荐
- @SessionAttributes 和 @SessionAttribute的区别
@SessionAttributes 和 @SessionAttribute的区别 Spring MVC中有两个长得非常像的注解:@SessionAttributes 和 @SessionAttrib ...
- mysql-管理命令【创建用户、授权、修改密码、删除用户和授权、忘记root密码】
一.创建用户 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 关键参数说明: username - 创建登录用户名, host ...
- 汇编 之 win10 下安装dosbox 和 MASM
所需工具链接: 链接:https://pan.baidu.com/s/1nenMsSdgEkeRKc6wh9DQRA 提取码:1r89 只需要以下两个工具 安装dosbox 和MASM步骤 (1)解压 ...
- Vant Weapp小程序蹲坑之使用card组件显示价格
问题 在基于mpvue+Vant Weapp组件库实战过程中,问题越来越多.网络上所谓的"坑"总结,仅仅不过是其开发中所遭所遇之"坑"而已--估计后面的&quo ...
- Git 常见问题汇总
git reabse 合并多个commit git rebase -i HEAD~{NUM} git rebase -i start end 会进入一个指定区间的commit列表 根据提示进行文本编辑 ...
- 由JS数组去重说起
一.问题描述: var array=[1,45,3,1,4,67,45],请编写一个函数reDup来去掉其中的重复项,即 reDup(array); console.log(array);//[1,4 ...
- EntityFramework 迁移遇到的问题
2019独角兽企业重金招聘Python工程师标准>>> 添加迁移add-migration migrationname 更新数据Update-Database EntityFrame ...
- unittest(封装用例)
from selenium import webdriver from time import sleep import unittest #导入unittest库 import HTMLTestRu ...
- Nginx编译与安装
我的系统是CentOS-7,Nginx的源码可以在官网下载,网址为:http://nginx.org/en/download.html,我下载了目前的最新版本nginx-1.9.3.tar.gz 下载 ...
- zabbix tigger 设置
设置一个内存在10分钟内持续低于某值才告警: 设置方法: 修改模板的tigger configuration - > Template OS linux Active(选择自己的模板)-&g ...