一个叫差分约束系统的东西。如果每个点定义一个顶标x(v),x(t)-x(s)将对应着s-t的最短路径。

比如说w+a≤b,那么可以画一条a到b的有向边,权值为w,同样地给出b+w2≤c,a+w3≤c。那么a到c的最大差就受这些不等式约束,对应着图中的最短路。

这个边多,不要用vector存,满了以后重新复制数据,会T的,没试过指定大小。。。

#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<queue>
using namespace std;
//POJ 是个坑
const int maxn = 3e4+;
const int maxm = 15e4+;
struct Edge
{
int v,w,nxt;
//Edge(int v = 0,int w = 0):v(v), w(w){}
}edges[maxm]; int ecnt,head[maxn]; typedef pair<int,int> Node;
#define fi first
#define se second void addEdge(int u,int v,int w)
{
edges[++ecnt].v = v;
edges[ecnt].w = w;
edges[ecnt].nxt = head[u];
head[u] = ecnt;
} int d[maxn]; const int INF = 0x7f7f7f7f; int dijkstra(int s, int t)
{
priority_queue<Node,vector<Node>,greater<Node> > q;
memset(d,0x7f,sizeof(d));
q.push(Node(d[s] = ,s));
while(q.size()){
Node x = q.top(); q.pop();
int u = x.se;
if(u == t) return d[t];
if(x.fi != d[u]) continue;
for(int i = head[u]; i; i = edges[i].nxt){
Edge &e = edges[i];
if(d[e.v] - d[u] > e.w){
d[e.v] = d[u] + e.w;
q.push(Node(d[e.v],e.v));
}
}
}
return INF;
} int main()
{
//freopen("in.txt","r",stdin);
int n,m; cin>>n>>m;
while(m--){
int u,v,w; scanf("%d%d%d",&u,&v,&w);
addEdge(u-,v-,w);
}
printf("%d\n",dijkstra(,n-));
return ;
}

poj 3159 Candies (差分约束)的更多相关文章

  1. POJ 3159 Candies 差分约束dij

    分析:设每个人的糖果数量是a[i] 最终就是求a[n]-a[1]的最大值 然后给出m个关系 u,v,c 表示a[u]+c>=a[v] 就是a[v]-a[u]<=c 所以对于这种情况,按照u ...

  2. [poj 3159]Candies[差分约束详解][朴素的考虑法]

    题意 编号为 1..N 的人, 每人有一个数; 需要满足 dj - di <= c 求1号的数与N号的数的最大差值.(略坑: 1 一定要比 N 大的...difference...不是" ...

  3. poj 3159 Candies 差分约束

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 22177   Accepted: 5936 Descrip ...

  4. POJ 3159 Candies (图论,差分约束系统,最短路)

    POJ 3159 Candies (图论,差分约束系统,最短路) Description During the kindergarten days, flymouse was the monitor ...

  5. POJ 3159 Candies(SPFA+栈)差分约束

    题目链接:http://poj.org/problem?id=3159 题意:给出m给 x 与y的关系.当中y的糖数不能比x的多c个.即y-x <= c  最后求fly[n]最多能比so[1] ...

  6. POJ 3159 Candies(差分约束,最短路)

    Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 20067   Accepted: 5293 Descrip ...

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

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

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

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

  9. 图论--差分约束--POJ 3159 Candies

    Language:Default Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 43021   Accep ...

  10. (简单) POJ 3159 Candies,Dijkstra+差分约束。

    Description During the kindergarten days, flymouse was the monitor of his class. Occasionally the he ...

随机推荐

  1. 数组,for语句(补10.11)

    1.数组定义:一系列通数据类型的数据集合. 2.数组赋值的两种方法: 先定义后赋值:(赋值从0开始) var aa = new Arrey(); aa[0] = 1; aa[1] = 2; 定义并赋值 ...

  2. Jodd发送邮件

    public static void main(String[] args) { Email email = Email.create().from("xxx") .to(&quo ...

  3. Linux 基础命令(一)

    Linux 基础: https://www.cnblogs.com/linhaifeng/articles/6045600.html Linux 比 Windows 更稳定做服务器,开发出来的软件需要 ...

  4. java反射机制应用之动态代理

    1.静态代理类和动态代理类区别 静态代理:要求被代理类和代理类同时实现相应的一套接口:通过代理类的对象调用重写接口的方法时,实际上执行的是被代理类的同样的 方法的调用. 动态代理:在程序运行时,根据被 ...

  5. 部署Azure Log Analytics

    Azure Log Analytics功能用于收集并处理Azure资源或部分本地资源的log数据,同时该功能与Azure Alert集成,可以针对搜集到的异常日志给管理人员发起报警. 1.创建Azur ...

  6. git小白的学习

    1.1 Git介绍 1.1.1 什么是Git Git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Linux ...

  7. ==和equals方法

    Java程序中测试两个变量时否相等有两种方法: == 和 equals. ==判断 当使用==来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数字类型(不一定要求数据类型严格相同),则只要 ...

  8. vue中做出购物车的功能

    效果展示: 一:html结构 <div id="buyButton" class="btn-buy"> <button onclick=&qu ...

  9. 7.数据处理函数 ---SQL

    大多数SQL实现支持以下类型的函数. 用于处理文本字符串(如删除或填充值,转换值为大写或小写)的文本函数. 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数. 用于处理日期和时间值 ...

  10. Ubuntu14.04 使用scp远程传输命令进行服务器文件互传

    1.将另一个服务器上的文件拷贝到本地 sudo scp host_name@host_ip:/home/aaa/bbb /ccc/ddd/bbb 上面命令的意思是将远程服务器/home/aaa/目录下 ...