POJ 3255:Roadblocks(次短路)
题目大意:求无向图的次短路。
分析:
在起点终点各求一次最短路,枚举边,通过该边的最短路为其权值加上到起点和终点最短路之和,找到最短但又比最短路长的路径。
代码:
program block;
type
point=^node;
node=record
v,c:longint; next:point; end;
var
a:array[..]of point;
dis:array[..,..]of longint;
q:array[..]of longint;
g:array[..]of boolean;
e:array[..,..]of longint;
n,i,m,x,y,v,ans:longint; p:point;
procedure add(x,y,c:longint);
var p:point;
begin
new(p); p^.v:=y; p^.c:=c; p^.next:=a[x]; a[x]:=p;
end;
procedure spfa(s,d,l:longint);
var i,h,t,u,v,k:longint;
begin
fillchar(g,sizeof(g),false);
for i:= to n do dis[i,l]:=maxlongint div ; dis[s,l]:=; g[s]:=true;
h:=; t:=; q[]:=s;
while h<t do
begin
inc(h); u:=q[h]; g[u]:=false; new(p); p:=a[u];
while p<>nil do
begin
v:=p^.v;
if dis[v,l]>dis[u,l]+p^.c then
begin
dis[v,l]:=dis[u,l]+p^.c;
if g[v]=false then begin g[v]:=true; inc(t);q[t]:=v;end;
end;
p:=p^.next;
end;
end;
end;
begin
assign(input,'block.in');
reset(input);
assign(output,'block.out');
rewrite(output);
readln(n,m);
for i:= to m do
begin
readln(x,y,v); e[i,]:=x; e[i,]:=y; e[i,]:=v;
add(x,y,v); add(y,x,v);
end;
spfa(,n,); spfa(n,,); ans:=maxlongint;
for i:= to m do
begin
v:=dis[e[i,],]+dis[e[i,],]+e[i,]; if (v<ans)and(v>dis[n,]) then ans:=v;
v:=dis[e[i,],]+dis[e[i,],]+e[i,]; if (v<ans)and(v>dis[n,]) then ans:=v;
end;
writeln(ans);
close(input); close(output);
end.
POJ 3255:Roadblocks(次短路)的更多相关文章
- POJ 3255 Roadblocks (次级短路问题)
解决方案有许多美丽的地方.让我们跳回到到达终点跳回(例如有两点)....无论如何,这不是最短路,但它并不重要.算法能给出正确的结果 思考:而最短的路到同一点例程.spfa先正达恳求一次,求的最短路径的 ...
- poj 3255 Roadblocks 次短路(两次dijksta)
Roadblocks Time Limit : 4000/2000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total S ...
- POJ 3255 Roadblocks (次短路 SPFA )
题目链接 Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her ...
- POJ 3255 Roadblocks (次短路)
题意:给定一个图,求一条1-n的次短路. 析:次短路就是最短路再长一点呗,我们可以和求最短路一样,再多维护一个数组,来记录次短路. 代码如下: #pragma comment(linker, &quo ...
- POJ 3255 Roadblocks(A*求次短路)
Roadblocks Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12167 Accepted: 4300 Descr ...
- POJ 3255 Roadblocks (次短路模板)
Roadblocks http://poj.org/problem?id=3255 Time Limit: 2000MS Memory Limit: 65536K Descriptio ...
- poj - 3225 Roadblocks(次短路)
http://poj.org/problem?id=3255 bessie 有时会去拜访她的朋友,但是她不想走最快回家的那条路,而是想走一条比最短的路长的次短路. 城镇由R条双向路组成,有N个路口.标 ...
- 次最短路径 POJ 3255 Roadblocks
http://poj.org/problem?id=3255 这道题还是有点难度 要对最短路径的算法非常的了解 明晰 那么做适当的修改 就可以 关键之处 次短的路径: 设u 到 v的边权重为cost ...
- poj 3255 Roadblocks
Roadblocks Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13216 Accepted: 4660 Descripti ...
- POJ 3255 Roadblocks --次短路径
由于次短路一定存在,则可知次短路一定是最短路中某一条边不走,然后回到最短路,而且只是一条边,两条边以上不走的话,就一定不会是次短路了(即以边换边才能使最小).所以可以枚举每一条边,算出从起点到这条边起 ...
随机推荐
- hdu-2256 Problem of Precision---矩阵快速幂+数学技巧
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2256 题目大意: 题目要求的是(sqrt(2)+sqrt(3))^2n %1024向下取整的值 解题 ...
- 自动释放池的前世今生 ---- 深入解析 autoreleasepool
http://draveness.me/autoreleasepool.html 关注仓库,及时获得更新:iOS-Source-Code-Analyze Follow: Draveness · Git ...
- 2018.6.2 AndroidStudio项目中的问题:===== oast.LENGTH_LONG和Toast.LENGTH_SHORT分别对应多长时间
oast.LENGTH_LONG和Toast.LENGTH_SHORT分别对应多长时间 在Android源码中的NotificationManagerService.java这个类中定义了两个静态变量 ...
- MooseFS 3.0 集群环境部署过程
1 准备好6台虚拟机:(centos7) Master server: 192.168.242.135 Cgi server: 192.168.242.135 meta ...
- vscode wepy 用户自定义代码片段
VSCode wepy 自定义代码片段 { "wepy-page": { "prefix": "wepy", "body" ...
- 1043: [HAOI2008]下落的圆盘
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1725 Solved: 743[Submit][Status][Discuss] Descripti ...
- Linux分享笔记:查看帮助命令 & 常用系统工作命令
在执行命令时,为了防止出现权限不足的问题,在登陆Linux系统时,要点击普通用户名下的 “Not listed?” 用root管理员身份登陆. [1] 执行查看帮助命令 man 这条命令用来查看帮助文 ...
- mysql基础,DISTINCT关键字
- mysql零散操作
添加对外用户 CREATE USER 'admin'@'%' IDENTIFIED BY '!QAZ2wsx'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%'; ...
- Visual Studio的下载安装
下载地址: 下载Visual Studio Code https://code.visualstudio.com/ 安装扩展包 安装图标 View->Extensions 搜索Icon 安装Ma ...