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

很好的差分约束入门题目,自己刚看时学呢

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
using namespace std;
#define INF 0x3f3f3f3f
#define maxn 1010
int dis[maxn];
int path[maxn];
int inq[maxn];
int cnt[maxn];
class node
{
public:
int to;
int w;
int next;
};
node edge[maxn*];
int head[maxn*];
int tol;
int n,ML,MD;
void add(int u,int v,int w)
{
edge[tol].to=v;
edge[tol].w =w;
edge[tol].next=head[u];
head[u]=tol++;
};
queue<int>Q;
bool SPFA()
{
memset(inq,,sizeof(inq));
memset(cnt,,sizeof(cnt));
int v0=;
for(int i=;i<=n;i++)
{
dis[i]=INF;
path[i]=v0;
inq[i]=;
}
dis[v0]=;
path[v0]=v0;
inq[v0]++;
cnt[v0]++;
Q.push(v0);
while(!Q.empty())
{
int u=Q.front();
Q.pop();
inq[u]--;
int tmp=head[u]; while(tmp!=-)
{
int v=edge[tmp].to;
int w=edge[tmp].w;
if(dis[v]>dis[u]+w)
{
dis[v]=dis[u]+w;
path[v]=u;
if(inq[v]==)
{
inq[v]++;
if(++cnt[v]>n) return false;
Q.push(v); }
}
tmp=edge[tmp].next;
}
}
return true;
}
int main()
{
int a,b,d;
while(scanf("%d%d%d",&n,&ML,&MD)!=EOF)
{
tol=;
memset(head,-,sizeof(head));
while(ML--)
{
scanf("%d%d%d",&a,&b,&d);
add(a,b,d); }
while(MD--)
{
scanf("%d%d%d",&a,&b,&d);
add(b,a,-d);
}
if(!SPFA()) cout<<"-1"<<endl;
else
if(dis[n]>=INF) cout<<"-2"<<endl;
else cout<<dis[n]<<endl; }
return ;
}

poj Layout 差分约束+SPFA的更多相关文章

  1. POJ-3169 Layout (差分约束+SPFA)

    POJ-3169 Layout:http://poj.org/problem?id=3169 参考:https://blog.csdn.net/islittlehappy/article/detail ...

  2. POJ 1201 差分约束+SPFA

    思路: 差分约束,难在建图.(我是不会告诉你我刚学会SPFA的...) 把每个区间的ai–>bi连一条长度为ci的边. k–>k+1连一条长度为0的边. k+1–>k连一条长度为-1 ...

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

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

  4. 【poj3169】【差分约束+spfa】

    题目链接http://poj.org/problem?id=3169 题目大意: 一些牛按序号排成一条直线. 有两种要求,A和B距离不得超过X,还有一种是C和D距离不得少于Y,问可能的最大距离.如果没 ...

  5. POJ 3169 Layout(差分约束+链式前向星+SPFA)

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

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

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

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

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

  8. POJ 1364 / HDU 3666 【差分约束-SPFA】

    POJ 1364 题解:最短路式子:d[v]<=d[u]+w 式子1:sum[a+b+1]−sum[a]>c      —      sum[a]<=sum[a+b+1]−c−1  ...

  9. POJ 3159 Candies(差分约束+spfa+链式前向星)

    题目链接:http://poj.org/problem?id=3159 题目大意:给n个人派糖果,给出m组数据,每组数据包含A,B,C三个数,意思是A的糖果数比B少的个数不多于C,即B的糖果数 - A ...

随机推荐

  1. block、块级作用域

    block:语句块 (或其他语言中的 复合语句) 用来组织零个或多条语句. 包含在{ }里面 通常在流程控制语句 (如 if, for, while)中使用 块级作用域:通过var声明的变量没有块级作 ...

  2. build.gradle代码

    Android Studio 这么强大的工具,就算我们不懂 gradle, groovy, 也照样能借助AS对 Android 项目进行编译.调试.运行.打包等操作.build.gradle 这个文件 ...

  3. 顺序线性表之大整数求和C++

    顺序线性表之大整数求和 大整数求和伪代码 1.初始化进位标志 flag=0: 2.求大整数 A 和 B 的长度: int aLength = a.GetLength(); int bLength = ...

  4. Excel图表-太极图

    p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ...

  5. python 日期 & 时间

    1. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 2. 时间间隔是以秒为单位的浮点小数. 3. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长 ...

  6. 深拷贝/浅拷贝之Js / AngularJs

    var a = [1,2,3,4]; var b = a; b[1] = 8; console.log("a:" + a );//1,8,3,4 consloe.log(" ...

  7. nlog学习使用

    最近有不少朋友推荐我用NLog.我以前都是自己写txt的文本输出log,以前别人用log4net的时候看那个配置文件,看得我一阵烦,我比较喜欢约定胜于配置的组件.这次玩了一波NLog,,相当不错.一下 ...

  8. ECP系统J2EE架构开发平台

    一 体系结构 ECP平台是一个基于J2EE架构设计的大型分布式企业协同管理平台,通过采用成熟的J2EE的多层企业架构体系,充分保证了系统的健壮性.开放性和扩展性.可选择部署于多种系统环境,满足不同类型 ...

  9. B/S 和 C/S两种架构

    一: 什么是B/S(Browser/Server)架构? 应用系统完全放在应用服务器上, 并通过应用服务器同数据库服务器进行通信,系统界面 是通过浏览器来展现的. T是浏览器模式. 优点: 1)客户端 ...

  10. C#图解教程-方法参数笔记(上)

    一晃大学四年要过去了,期间乱点了很多技能点, 导致每一项技能都只是处于入门阶段.为了将C#作为我的主要技能,准备恶补相关姿势(知识),通过各种技术论坛的推荐,找到了<C#图解教程>这本书. ...