题目链接:http://poj.org/problem?id=3169

有n头牛站成一排 在他们之间有一些牛的关系比较好,所以彼此之间的距离不超过一定距离;也有一些关系不好的牛,希望彼此之间的距离大于等于一定距离;

关系好的有ml个(A B D)表示A牛和B牛之间的距离<=D 关系不好的有md个(A,B,D)表示A牛和B牛之间的距离>=D,求在满足条件的排列中,求出牛1和牛n的最大距离;

如果距离可以是无限大输出-2,如果不存在这样的排列输出-1;

我们用d[i]表示第i头牛的位置,因为牛是按照编号排列顺序的,

所以         d[i]-d[i-1]>=0; --------- d[i-1]-d[i]<=0;(i到i-1的距离是0)

关系好的     d[B]-d[A] <= C; --------- d[B]-d[A]<=C;(A到B的距离是C)

关系不好的  d[B]-d[a]>=C; ----------- d[A]-d[B]<=-C;(B到A的距离是-C)

我们要求是的d[n]-d[1]<=x中的x;

刚好满足差分约束系统,所以直接建图求1-n的最短路即可;如果存在负环则不存在这样的序列,用spfa判断负环,如果距离为无穷大说明可以是任意值,

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <queue>
#include <stack>
#include <algorithm>
#include <map>
#include <string>
typedef long long LL;
#define INF 0x3f3f3f3f
#define met(a, b) memset(a, b, sizeof(a))
#define N 1500 using namespace std; int n, md, ml, G[N][N], vis[N], dist[N], cnt[N]; int spfa(int s)
{
for(int i=; i<=n; i++)
dist[i] = INF;
met(vis, );
met(cnt, );
queue<int>Q;
Q.push(s);
vis[s] = ;
dist[s] = ;
cnt[s]++;
while(!Q.empty())
{
int p = Q.front();Q.pop();
vis[p] = ;
cnt[p] ++;
for(int i=; i<=n; i++)
{
if(dist[i]>dist[p]+G[p][i])
{
dist[i] = dist[p]+G[p][i];
if(!vis[i])
{
vis[i] = ;
cnt[i]++;
if(cnt[i]>=n)
return -;
Q.push(i);
}
}
}
}
if(dist[n] == INF) return -;
return dist[n];
} int main()
{
while(scanf("%d %d %d", &n, &ml, &md) != EOF)
{
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
G[i][j] = INF;
G[i][i] = G[i][i-] = ;
}
int u, v, w;
for(int i=; i<=ml; i++)
{
scanf("%d %d %d", &u, &v, &w);
G[u][v] = w;
}
for(int i=; i<=md; i++)
{
scanf("%d %d %d", &u, &v, &w);
G[v][u] = -w;
} int ans = spfa();
printf("%d\n", ans);
}
return ;
}

Layout---poj3169(差分约束+最短路spfa)的更多相关文章

  1. POJ 3169 Layout 【差分约束】+【spfa】

    <题目链接> 题目大意: 一些母牛按序号排成一条直线.有两种要求,A和B距离不得超过X,还有一种是C和D距离不得少于Y,问可能的最大距离.如果没有最大距离输出-1,如果1.n之间距离任意就 ...

  2. POJ 3169 Layout(差分约束+最短路)题解

    题意:有一串数字1~n,按顺序排序,给两种要求,一是给定u,v保证pos[v] - pos[u] <= w:二是给定u,v保证pos[v] - pos[u] >= w.求pos[n] - ...

  3. O - Layout(差分约束 + spfa)

    O - Layout(差分约束 + spfa) Like everyone else, cows like to stand close to their friends when queuing f ...

  4. POJ3169:Layout(差分约束)

    Layout Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15705   Accepted: 7551 题目链接:http ...

  5. poj 3169 Layout(差分约束+spfa)

    题目链接:http://poj.org/problem?id=3169 题意:n头牛编号为1到n,按照编号的顺序排成一列,每两头牛的之间的距离 >= 0.这些牛的距离存在着一些约束关系:1.有m ...

  6. [USACO2005][POJ3169]Layout(差分约束)

    题目:http://poj.org/problem?id=3169 题意:给你一组不等式了,求满足的最小解 分析: 裸裸的差分约束. 总结一下差分约束: 1.“求最大值”:写成"<=& ...

  7. (简单) POJ 3169 Layout,差分约束+SPFA。

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

  8. POJ 3159 Candies 解题报告(差分约束 Dijkstra+优先队列 SPFA+栈)

    原题地址:http://poj.org/problem?id=3159 题意大概是班长发糖果,班里面有不良风气,A希望B的糖果不比自己多C个.班长要满足小朋友的需求,而且要让自己的糖果比snoopy的 ...

  9. POJ 3167 Layout(差分约束)

    题面 Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 ...

随机推荐

  1. c++ map和mutimaps 插入值

    (1)运用value_type std::map<std::string, float> col1; col1.insert(std::map<std::string,float&g ...

  2. 【wikioi】1922 骑士共存问题(网络流/二分图匹配)

    用匈牙利tle啊喂?和网络流不都是n^3的吗(匈牙利O(nm), isap O(n^2m) 但是isap实际复杂度很优的(二分图匹配中,dinic是O(sqrt(V)*E),不知道isap是不是一样. ...

  3. HDU 4630 No Pain No Game(树状数组)

    题目链接 看的别人的题解,离线之后,按r排序,枚举1-n,利用pre[j],存上次j的倍数出现的位置,树状数组里统计的当前位置到最后的最大值,树状数组是求区间最值其实应该很麻烦的,但是此题用法只是求到 ...

  4. HttpClient_javax.net.ssl.SSLHandshakeException: sun.security.validator 问题解决,与环境有关

    用httpclient访问https 资源时,会出现异常,与环境也有关系,有些机器请求正常. javax.net.ssl.SSLHandshakeException: sun.security.val ...

  5. winform学习-----理解小概念-20160517

    1.MouseDown事件 当鼠标指针位于控件上并按下鼠标键时发生. 2.MouseUp事件 当鼠标指针在控件上并释放鼠标按键时发生. 与 mouseout 事件不同,只有在鼠标指针离开被选元素时,才 ...

  6. 运用正则表达式在Asp中过滤Html标签代码的四种不同方法

    Function RemoveHTML(strHTML)Dim objregExp, Match, MatchesSet objRegExp = New RegexpobjRegExp.IgnoreC ...

  7. Maya Shortcuts 常用快捷键

    快捷键 功能解释 工具操作 enter 完成当前操作 ~ 终止当前操作 insert 插入工具编辑模式 w 移动工具 e 旋转工具 r 缩放工具 y 非固定排布工具 shift+Q 选择工具,(切换到 ...

  8. IMAP命令

    IMAP命令学习1.CREATE <folder>CREATE可以创建指定名字的新邮箱.邮箱名称通常是带路径的文件夹全名.(有些IMAP客户机使用邮件夹称呼新邮箱)C: A003 CREA ...

  9. django 1.8 日志配置

    django 1.8 日志配置 以下为setings配置logging代码片段 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(_ ...

  10. THinkPHP在模板中的volist循环使用外部变量注意事项

    循环中.自己定义的id=volist就可以使用$volist.id 或者$volist['id'] 而外面定义的变量就不能使用$vo.id 必须使用$vo['id']<volist name=& ...