A - Layout

Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u

Description

Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 <= N <= 1,000) cows numbered 1..N standing along a straight line waiting for feed. The cows are standing in the same order as they are numbered, and since they can be rather pushy, it is possible that two or more cows can line up at exactly the same location (that is, if we think of each cow as being located at some coordinate on a number line, then it is possible for two or more cows to share the same coordinate).

Some cows like each other and want to be within a certain distance
of each other in line. Some really dislike each other and want to be
separated by at least a certain distance. A list of ML (1 <= ML <=
10,000) constraints describes which cows like each other and the
maximum distance by which they may be separated; a subsequent list of MD
constraints (1 <= MD <= 10,000) tells which cows dislike each
other and the minimum distance by which they must be separated.

Your job is to compute, if possible, the maximum possible distance
between cow 1 and cow N that satisfies the distance constraints.

Input

Line 1: Three space-separated integers: N, ML, and MD.

Lines 2..ML+1: Each line contains three space-separated positive
integers: A, B, and D, with 1 <= A < B <= N. Cows A and B must
be at most D (1 <= D <= 1,000,000) apart.

Lines ML+2..ML+MD+1: Each line contains three space-separated
positive integers: A, B, and D, with 1 <= A < B <= N. Cows A
and B must be at least D (1 <= D <= 1,000,000) apart.

Output

Line
1: A single integer. If no line-up is possible, output -1. If cows 1
and N can be arbitrarily far apart, output -2. Otherwise output the
greatest possible distance between cows 1 and N.

Sample Input

4 2 1
1 3 10
2 4 20
2 3 3

Sample Output

27

Hint

Explanation of the sample:

There are 4 cows. Cows #1 and #3 must be no more than 10 units
apart, cows #2 and #4 must be no more than 20 units apart, and cows #2
and #3 dislike each other and must be no fewer than 3 units apart.

The best layout, in terms of coordinates on a number line, is to put cow #1 at 0, cow #2 at 7, cow #3 at 10, and cow #4 at 27.

 
 
算法分析:
      不知道为什么用SPFA 会超时,改成bellman_ford 算法了就行了,并且需要注意 差分约束 建图时 两个点是否眼交换!
   二题目里却说是有大小顺序的,但是不交换顺序就错了!(我用位运算交换顺序,据说会节省时间,但是刘汝佳的树立却说不建议这样写,不知道为什    么?)
 
 
 
Accepted:
 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define INF 9999999 int dis[1010];
int cnt;
int n, ml, md; struct N
{
int u;
int v;
int w;
}s[200005]; void add(int u, int v, int w )
{
s[cnt].u=u;
s[cnt].v=v;
s[cnt++].w=w;
} void bellman_ford()
{
int i, j;
for(i=1; i<=n; i++)
dis[i]=INF;
dis[1]=0; for(i=2; i<=n; i++ )
{
int flag=0;
for(j=0; j<cnt; j++ ) //检查每条边
{
if( dis[s[j].v] > dis[s[j].u] + s[j].w )
{
dis[s[j].v] = dis[s[j].u]+s[j].w ;
flag=1;
}
}
if(flag==0)
break;
}
for(i=0; i<cnt; i++)
{
if(dis[s[i].v] > dis[s[i].u]+s[i].w )
break;
}
if(i<cnt)
printf("-1\n");
else
{
if( dis[n]==INF )
printf("-2\n");
else
printf("%d\n", dis[n] );
}
} int main()
{
int i, j;
int u, v, w;
while(scanf("%d %d %d", &n, &ml, &md)!=EOF)
{
cnt=0;
for(i=0; i<ml; i++)
{
scanf("%d %d %d", &u, &v, &w ); //亲密的牛 最大距离
if(u>v)
{
u=u^v; v=v^u; u=u^v; //还可以这样写: u^=v^=u^=v ;
}
add(u, v, w);
}
for(j=0; j<md; j++)
{
scanf("%d %d %d", &u, &v, &w ); //排斥的牛 最小距离
if(u<v)
{
u=u^v; v=v^u; u=u^v; // u^=v^=u^=v ;
}
add(u, v, -w);
}
bellman_ford();
}
return 0;
}

POJ Layout的更多相关文章

  1. poj Layout 差分约束+SPFA

    题目链接:http://poj.org/problem?id=3169 很好的差分约束入门题目,自己刚看时学呢 代码: #include<iostream> #include<cst ...

  2. POJ 3169 Layout(差分约束啊)

    题目链接:http://poj.org/problem? id=3169 Description Like everyone else, cows like to stand close to the ...

  3. POJ 3169.Layout 最短路

    Layout Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11612   Accepted: 5550 Descripti ...

  4. poj 3169 Layout 差分约束模板题

    Layout Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6415   Accepted: 3098 Descriptio ...

  5. POJ 3169 Layout (差分约束系统)

    Layout 题目链接: Rhttp://acm.hust.edu.cn/vjudge/contest/122685#problem/S Description Like everyone else, ...

  6. POJ 3169 Layout (spfa+差分约束)

    题目链接:http://poj.org/problem?id=3169 差分约束的解释:http://www.cnblogs.com/void/archive/2011/08/26/2153928.h ...

  7. poj 3169 Layout

    Layout Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8610   Accepted: 4147 Descriptio ...

  8. POJ 3169 Layout (图论-差分约束)

    Layout Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6574   Accepted: 3177 Descriptio ...

  9. POJ 3167 Layout(差分约束)

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

随机推荐

  1. mac 下 pycharm 快捷键

    用过快捷键立即感觉高大上了,最主要的是很方便啊!很强大 cmd b 跳转到声明处(cmd加鼠标) opt + 空格 显示符号代码 (esc退出窗口 回车进入代码) cmd []光标之前/后的位置 op ...

  2. Eclipse 经常使用快捷键

    一.File 二.Edit Ctrl + 1  有益写错,让编辑器提醒改动 三.Refactor 抽取为全局变量 Refactor - Convert Local Variable to Field ...

  3. Redis的订阅发布

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using ServiceS ...

  4. C语言中的main函数以及main函数是如何被调用的

    main函数是C语言中比较特殊的函数,C程序总是从main函数开始执行,main函数的原型是: int main(int argc, char *argv[]); 其中argc是命令行参数的个数,ar ...

  5. apache占用内存高解决办法

    我用512M的vps,访问量不大,但内存占用很大,甚至宕机. 我用top,然后shitf+m发现,httpd占用内存极大.经过网上找资料设置后,用过一段时间终于没再出现内存问题了. 首先查找配置文件的 ...

  6. FreeSWITCH 学习笔记

    [1]FreeSWITCH学习笔记 1.Windows安装包下载地址:http://files.freeswitch.org/windows/installer/ 2.源码下载地址:http://fi ...

  7. 一种关键字搜索---edu.cn

    比如要搜索知识点最小二乘,可以这样: 曲线拟合的最小二乘法 edu.cn 然后就一大片关于edu的相关链接,很多知名学校链接 http://www.bb.ustc.edu.cn/jpkc/xiaoji ...

  8. Windows server2008 搭建ASP接口訪问连接oracle数据库全过程记录

    真的是太不easy了,曾经的时候在window server 2003上面搭建了一套asp+oracle的接口系统.就费了好大的劲儿,事实上那会迷迷瞪瞪的也不知道怎么的就弄好了,也懒得管了.OK,从昨 ...

  9. 在ListView的GroupItem头中显示每列的Summary

    问题描述 WPF自带的ListView和DataGrid控,都提供了数据分组的支持,并可以对分组的Header进行自定义.但是,如果想在每个分组的Header中,显示出本分组的"小计&quo ...

  10. 创建有提示的ui组件

    using UnityEditor; using UnityEngine; using System.Collections; using Edelweiss.CloudSystem; namespa ...