poj3159 Candies 2012-09-07
2016-03-02 20:59
253 查看
http://poj.org/problem?id=3159
差分约束系统
(spfa+
队列)会TLE,(spfa+stack)可以过,不过有点奇葩的是建边时 输入 (a,b,c) 如果连边 w(b,a)=c 然后
做 spfa(n),输出dis[1]会超时。反过来 连边 w(a,b)=c,然后做spfa(1),输出dis
就484Ms过了。数据比较坑
爹吧。
差分约束系统
(spfa+
队列)会TLE,(spfa+stack)可以过,不过有点奇葩的是建边时 输入 (a,b,c) 如果连边 w(b,a)=c 然后
做 spfa(n),输出dis[1]会超时。反过来 连边 w(a,b)=c,然后做spfa(1),输出dis
就484Ms过了。数据比较坑
爹吧。
Program poj3159; type cord=record ne,da,po:longint; end; var n,m,le,tot:longint; head,dis:array[1..30000]of longint; h,v:array[1..200000]of longint; f:array[1..30000]of boolean; link:array[1..200000]of cord; Procedure add(x,y,z:longint); begin inc(le); with link[le] do begin po:=y; da:=z; ne:=head[x]; end; head[x]:=le; end; Procedure init; var i,j,k,l:longint; begin readln(n,m); for i:=1 to m do begin readln(j,k,l); add(j,k,l); end; end; Procedure spfa(x:longint); var i,j,k,t:longint; begin for i:=1 to n do dis[i]:=maxlongint div 3; dis[x]:=0; h[1]:=x; f[x]:=true; t:=1; repeat k:=h[t]; dec(t); f[k]:=false; i:=head[k]; while i<>0 do begin if dis[k]+link[i].da<dis[link[i].po] then begin dis[link[i].po]:=dis[k]+link[i].da; if f[link[i].po]=false then begin f[link[i].po]:=true; inc(t); h[t]:=link[i].po; end; end; i:=link[i].ne; end; until t=0; end; Procedure main; var i,j:longint; begin spfa(1); writeln(dis ); end; Begin init; main; end.
相关文章推荐
- jsp九大内置对象及其用法
- 获取AndroidManifest里的信息
- 图片循环滚动控件ScrollingImageView
- java web部分知识
- Linux下的read,write函数
- 复制jar包到eclipse报错
- 消息的消费顺序和次数JMS(三)
- IOS 开发 之 动画
- python struct、json、pickle模块
- Unity3d 换装Avatar系统
- LeetCode 41 - First Missing Positive
- [绍棠] iOS 在一个UILabel显示不同的字体和颜色
- js与jquery实现搜索框提示文字显示与隐藏
- 1020. Tree Traversals (25)
- HDOJ-2056(Rectangles)
- 区间K大数查询
- poj3292 Semi-prime H-numbers 2012-09-05
- 优先级
- angular.js 中同步视图和模型数据双向绑定,$watch $digest $apply 机制
- ArrayList 、Vector 的区别