关闭

【poj 3159】Candies 差分约束+spfa(stack)

标签: poj
512人阅读 评论(0) 收藏 举报
分类:

题目http://poj.org/problem?id=3159

Candies

Time Limit: 1500MS Memory Limit: 131072K
Total Submissions: 28008 Accepted: 7728

Description

During the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teacher brought the kids of flymouse’s class a large bag of candies and had flymouse distribute them. All the kids loved candies very much and often compared the numbers of candies they got with others. A kid A could had the idea that though it might be the case that another kid B was better than him in some aspect and therefore had a reason for deserving more candies than he did, he should never get a certain number of candies fewer than B did no matter how many candies he actually got, otherwise he would feel dissatisfied and go to the head-teacher to complain about flymouse’s biased distribution.

snoopy shared class with flymouse at that time. flymouse always compared the number of his candies with that of snoopy’s. He wanted to make the difference between the numbers as large as possible while keeping every kid satisfied. Now he had just got another bag of candies from the head-teacher, what was the largest difference he could make out of it?

Input

The input contains a single test cases. The test cases starts with a line with two integers N and M not exceeding 30 000 and 150 000 respectively. N is the number of kids in the class and the kids were numbered 1 through N. snoopy and flymouse were always numbered 1 and N. Then follow M lines each holding three integers A, B and c in order, meaning that kid A believed that kid B should never get over c candies more than he did.

Output

Output one line with only the largest difference desired. The difference is guaranteed to be finite.

Sample Input
2 2
1 2 5
2 1 4

Sample Output
5

Hint

32-bit signed integer type is capable of doing all arithmetic.

思路:差分约束系统,建边
b-a<=k
最大值建边,最短路;

代码

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<vector>
#include<queue>
using namespace std;
int head[30005],to[150005],val[150005],nex[150005];
int q[30005];
int n,m;
int aa,bb,cc;
int vis[30005];
int d[30005];
int tot=0;
void add(int xx,int yy,int vv)
{
    int tmp=head[xx];
    head[xx]=++tot;
    to[tot]=yy;
    val[tot]=vv;
    nex[tot]=tmp;
}
void spfa(int st)
{
    int top=0;
    memset(d,-1,sizeof(d));
    q[++top]=st;
    d[st]=0;
    vis[st]=1;
    while(top)
    {
        int now=q[top--];

        vis[now]=0;
        for(int i=head[now];i!=-1;i=nex[i])
        {
            int v=to[i];
            int vv=val[i];
            if(d[v]==-1||d[v]>d[now]+vv)
            {
                d[v]=d[now]+vv;
                if(!vis[v])
                {
                    vis[v]=1;
                    q[++top]=v;
                }
            }
        }
    }
}
int main()
{
    scanf("%d%d",&n,&m);
    memset(head,-1,sizeof(head));
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&aa,&bb,&cc);
        add(aa,bb,cc);
    }
    spfa(1);
    cout<<d[n]<<endl;
}
1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

【POJ 3159】Candies(差分约束+SPFA)

清风倦,冷琴未安
  • reverie_mjp
  • reverie_mjp
  • 2016-11-10 21:28
  • 144

poj——3159——Candies(spfa)

Description During the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teacher brought the kids of flymouse’s cla...
  • u011470356
  • u011470356
  • 2014-04-10 18:11
  • 359

Candies POJ 3159 (堆优化的SPFA,)

开始看半天看不懂题目意思,原来是~~~ 分差约束系统: 全都是两个未知数的差小于等于某个常数(大于等于也可以,因为左右乘以-1就可以化成小于等于)。这样的不等式组就称作差分约束系统。 也就是说求1到N的最短路就行了。 但是这道题数据比较大,m = 150000,只能用堆优化的SPFA
  • hi_just_do_it
  • hi_just_do_it
  • 2016-07-14 16:48
  • 300

Candies POJ--3159 -------邻接表存图(OJ卡队列与vector数组)

传送门:http://poj.org/problem?id=3159 这道题很不友好!!!卡掉了queue,卡掉了vector,这么卡题,像我一样的弱儿怎么办啊!!!!!!!! 于是,乖乖的百度---“图的邻接表存储方式”,啊啊啊,本以为vector 可以用到死的啊!!! 分割线 -----...
  • weixin_38064810
  • weixin_38064810
  • 2017-08-04 20:49
  • 74

POJ 3159 Candies 还是差分约束(栈的SPFA)

n个小朋友分糖果,你要满足他们的要求(a b x 意思为b不能超过a x个糖果)并且编号1和n的糖果差距要最大。
  • murmured
  • murmured
  • 2014-01-27 16:53
  • 1536

POJ 3159 Candies 差分约束系统

题目:http://poj.org/problem?id=3159 题意:给n个小朋友发糖果,有如下一些关系:a b c,代表第b个人得到的糖果不多于第a个人c个,即b - a 思路:初识差分约束系统,最短路倒是很久以前就会了。。。b - a 总结:终于见到了大神吐槽的最短路求不等式...
  • discreeter
  • discreeter
  • 2016-05-18 11:27
  • 198

poj 3159 Candies(查分约束+堆栈优化的spfa最短路模板)

题目链接:点击打开链接 Description During the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teacher brought the kids of...
  • txgANG
  • txgANG
  • 2016-11-08 21:13
  • 121

POJ 3159 Candies (差分约束)

Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 27843   Accepted: 7674 ...
  • Inite
  • Inite
  • 2016-05-01 16:24
  • 119

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

题意:幼儿园俩小朋友不和..一个编号是1,一个编号是n,给出m个关系,就是A小朋友最多比B小朋友多C个糖果,问n最多比1多多少个糖果... n、m很大...开始我想着是求最大路,但是spfa没法求因为这题是有环的...后来一想,直接边权为c不就是最大了么..求一下最短路就行了吧...因为求最大路可...
  • azx736420641
  • azx736420641
  • 2015-02-05 16:36
  • 241

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

Candies Time Limit: 1500MS Memory Limit: 131072K Total Submissions: 31848 Accepted: 8896 DescriptionDuring the kindergarten days, flymo...
  • Twillz
  • Twillz
  • 2017-07-17 21:37
  • 79
    个人资料
    • 访问:149004次
    • 积分:3503
    • 等级:
    • 排名:第10990名
    • 原创:183篇
    • 转载:2篇
    • 译文:0篇
    • 评论:18条
    博客专栏
    最新评论