最长路问题
来源:互联网 发布:mac os x 10.5正式版 编辑:程序博客网 时间:2024/06/06 13:11
今天校内测,有一道有向无环图的最长路,然后脑子发热交了spfa的,被学长思想教育了一番,学长说有向无环图最长路拓扑排序肯定是比spfa优的,然后就很傻地说我做过一题spfa更优,后来回去翻到了题,发现那是个无向图,妥妥地实力打脸。
题目描述大概是讲一群小孩分糖果,开始糖果在一个人手里,第一秒开始手上有糖的人美秒把糖分给周围的人,每个人拿到糖后都用同样C的时间吃糖(吃糖和发糖是可以同时进行的),问开始到最后一个人吃完糖要多久(人数≤10^5,关系数≤2*10^6,保证不重复)
显然,答案是最长路+C
不多说,放代码
var ans,tot,n,e,m,s,head,tail:longint; dist,que,link:array[0..100005]of longint; w,son,next:array[0..2000005]of longint; vis:array[0..100005]of boolean; procedure add(x,y,z:longint); begin inc(tot);w[tot]:=z;son[tot]:=y;next[tot]:=link[x];link[x]:=tot; end; procedure init; var x,y,i:longint; begin assign(input,'candy.in');reset(input); assign(output,'candy.out');rewrite(output); fillchar(link,sizeof(link),0); tot:=0; readln(n,e,s); readln(m); for i:=1 to e do begin readln(x,y); add(x,y,1); add(y,x,1); end; end; procedure spfa; var xx,j:longint; begin fillchar(dist,sizeof(dist),63); fillchar(vis,sizeof(vis),0); fillchar(que,sizeof(que),0); que[1]:=s;dist[s]:=0;vis[s]:=true; head:=0;tail:=1; while head<>tail do begin head:=(head+1) mod 100005; xx:=que[head]; vis[xx]:=false; j:=link[xx]; while j<>0 do begin if dist[xx]+w[j]<dist[son[j]] then begin dist[son[j]]:=dist[xx]+w[j]; if not vis[son[j]] then begin vis[son[j]]:=true; tail:=(tail+1) mod 100005; que[tail]:=son[j]; end; end; j:=next[j]; end; end; end; procedure print; var i:longint; begin ans:=-maxlongint; for i:=1 to n do if dist[i]>ans then ans:=dist[i]; writeln(ans+1+m); close(input);close(output); end; begin init; spfa; print; end.
Bingo!
【写的有漏洞的,欢迎路过大神吐槽】
2016-11-6 23:16:23
Ending.
1 0
- 最长路问题
- 最长路问题
- uva10099(最长路问题Floyd)
- 树中的最长路问题
- 挖地雷问题(DAG最长路)
- 树的直径(最长路)问题
- 最长平台问题
- 最长平台问题
- 最长重合区间问题
- 【最长连续序列问题】
- 最长平台问题
- 最长平台问题
- 最长路径问题dp
- 最长单增子序列问题
- 最长子序列问题
- 最长回文数组问题
- 【算法】最长工作时间问题
- 最长括号匹配问题
- Remote Debugging之放开那个webview让我来调戏(试)
- 商城购物车模块-自定义数字加减控件
- log4j将包内的所有类日志指定文件输出
- jsp九大内置对象
- 应用大数据和机器学习技术实现车险全流程智能化的方案(中) -理赔流程智能化改造
- 最长路问题
- OpenGL(一)绘制圆、五角星、正弦曲线
- hdu 5978 To begin or not to begin
- C语言指针
- c语言系列(一)基本数据类型
- Ubuntu更新源
- caffe学习(5)视觉层
- 几种算法的时间和控件复杂度
- 第七章 C控制语句:分支和跳转-C primer plus