博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj_3159_Candies
阅读量:5231 次
发布时间:2019-06-14

本文共 2741 字,大约阅读时间需要 9 分钟。

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.

题解

裸的差分约束系统啊!!

但是,但是,但是要用栈优化。

代码

const  maxE=150001;  maxV=30001;type  arr=record        y,w,next:longint;      end;var  n,m,nm:longint;  d,ls,st:array [0..maxV] of longint;  v:array [0..maxV] of boolean;  a:array [0..maxE] of arr;procedure add(u,v,z:longint);begin  inc(nm);  with a[nm] do    begin      y:=v; w:=z;      next:=ls[u];      ls[u]:=nm;    end;end;procedure init;var  i,u,v,z:longint;begin  readln(n,m); nm:=0;  for i:=1 to m do    begin      readln(u,v,z);      add(u,v,z);    end;end;procedure spfa;var  i,t,x:longint;begin  fillchar(d,sizeof(d),63);  t:=1;  d[1]:=0; st[1]:=1; v[1]:=true;  while t<>0 do    begin      x:=st[t]; dec(t);      i:=ls[x];      while i<>0 do        begin          if d[a[i].y]>d[x]+a[i].w then            begin              d[a[i].y]:=d[x]+a[i].w;              if not v[a[i].y] then                begin                  v[a[i].y]:=true;                  inc(t);                  st[t]:=a[i].y;                end;            end;          i:=a[i].next;        end;      v[x]:=false;    end;end;begin  init;  spfa;  write(d[n]);end.

转载于:https://www.cnblogs.com/zyx-crying/p/9319539.html

你可能感兴趣的文章
兼容所有浏览器的实时监听输入的解决方案(转)
查看>>
JSON跨域解决方案收集
查看>>
【转】linux dumpe2fs命令
查看>>
SSH框架整合总结
查看>>
图的深度优先遍历
查看>>
C# 之 提高WebService性能大数据量网络传输处理
查看>>
Python面向对象之:三大特性:继承,封装,多态以及类的约束
查看>>
微信小程序实现类似JQuery siblings()的方法
查看>>
md5sum命令详解
查看>>
[bzoj1004] [HNOI2008] Cards
查看>>
使用 Swoole 来加速你的 Laravel 应用
查看>>
TextWatcher原因activity内存泄漏问题
查看>>
Merge into的使用具体解释-你Merge了没有
查看>>
Linux安装程序Anaconda分析
查看>>
如何在chrome上打开SSL3.0
查看>>
应该是实例化对象的没有对属性赋值时,自动赋值为null,但不是空指针对象引用...
查看>>
从网易与淘宝的font-size思考前端设计稿与工作流
查看>>
原生HttpClient详细使用示例
查看>>
几道面试题
查看>>
搜索引擎-SHODAN
查看>>