2292: 【POJ Challenge 】永远挑战
2292: 【POJ Challenge 】永远挑战
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 553 Solved: 230
[Submit][Status][Discuss]
Description
lqp18_31和1tthinking经常出题来虐ftiasch。有一天, lqp18_31搞了一个有向图,每条边的长度都是1。 他想让ftiasch求出点1到点 N 的最短路。"水题啊。", ftiasch这么说道。
所以1tthinking把某些边的长度增加了1(也就是说,每条边的长度不是1就是2)。现在,可怜的ftiasch要向你求助了。
Input
第1行,两个整数 N (1 ≤ N ≤ 105) 和 M (1 ≤ M ≤ 106), 点和边的数量。
第2到 M + 1行: 三个整数 Ui, Vi, Wi (1 ≤ Wi ≤ 2), 从点 Ui 到 Vi 长度为 Wi 的边。
Output
一个整数,表示点1到点N的最短路。数据保证至少存在一条路径。
Sample Input
1 2 1
2 3 1
1 3 2
Sample Output
HINT
Source
题解:乍一看这不是明显的spfa嘛= =,不过要是那样子的话也太没意思了,于是想想别的办法——BFS,这里不是说了最多边权只有2嘛,所以将2的拆成两条边就好啦,然后水水哒BFS
以下是对比——spfa居然慢了这么多,汗QAQ
aaarticlea/png;base64,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" alt="" />
spfa代码(险些T掉有木有TT):
/**************************************************************
Problem:
User: HansBug
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ type
point=^node;
node=record
g,w:longint;
next:point;
end;
var
i,j,k,l,m,n,f,r:longint;
a:array[..] of point;
c,g,d:array[..] of longint;
p:point;
procedure add(x,y,z:longint);
var p:point;
begin
new(p);p^.g:=y;p^.w:=z;p^.next:=a[x];a[x]:=p;
end;
begin
readln(n,m);for i:= to n do a[i]:=nil;
for i:= to m do
begin
readln(j,k,l);
add(j,k,l);
end;
fillchar(c,sizeof(c),);fillchar(g,sizeof(g),);
c[]:=;f:=;r:=;g[]:=;d[]:=;
while f<>r do
begin
p:=a[d[f]];
while p<>nil do
begin
if (c[p^.g]=-) or ((c[d[f]]+p^.w)<c[p^.g]) then
begin
c[p^.g]:=c[d[f]]+p^.w;
if g[p^.g]= then
begin
g[p^.g]:=;
d[r]:=p^.g;r:=r mod +;
end;
end;
p:=p^.next;
end;
g[d[f]]:=;f:=f mod +;
end;
writeln(c[n]);
readln;
end.
BFS代码(好吧我承认BFS貌似还是比spfa多了一行):
/**************************************************************
Problem:
User: HansBug
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ type
point=^node;
node=record
g:longint;
next:point;
end;
var
i,j,k,l,m,n,f,r,t:longint;
a:array[..] of point;
c,d:array[..] of longint;
p:point;
procedure add(x,y:longint);
var p:point;
begin
new(p);p^.g:=y;p^.next:=a[x];a[x]:=p;
end;
begin
readln(n,m);t:=n;
for i:= to n* do a[i]:=nil;
for i:= to m do
begin
readln(j,k,l);
if l= then
begin
inc(n);
add(j,n);add(n,k);
end
else add(j,k);
end;
fillchar(c,sizeof(c),);d[]:=;f:=;r:=;c[]:=;
while f<r do
begin
p:=a[d[f]];
while p<>nil do
begin
if c[p^.g]=- then
begin
c[p^.g]:=c[d[f]]+;
d[r]:=p^.g;inc(r);
end;
p:=p^.next;
end;
inc(f);
end;
writeln(c[t]);
readln;
end.
2292: 【POJ Challenge 】永远挑战的更多相关文章
- BZOJ2292: 【POJ Challenge 】永远挑战
2292: [POJ Challenge ]永远挑战 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 513 Solved: 201[Submit][ ...
- bzoj2292【POJ Challenge 】永远挑战*
bzoj2292[POJ Challenge ]永远挑战 题意: 有向图,每条边长度为1或2,求1到n最短路.点数≤100000,边数≤1000000. 题解: 有人说spfa会T,所以我用了dijk ...
- bzoj 2295: 【POJ Challenge】我爱你啊
2295: [POJ Challenge]我爱你啊 Time Limit: 1 Sec Memory Limit: 128 MB Description ftiasch是个十分受女生欢迎的同学,所以 ...
- 【链表】BZOJ 2288: 【POJ Challenge】生日礼物
2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 382 Solved: 111[Submit][S ...
- BZOJ2288: 【POJ Challenge】生日礼物
2288: [POJ Challenge]生日礼物 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 284 Solved: 82[Submit][St ...
- BZOJ2293: 【POJ Challenge】吉他英雄
2293: [POJ Challenge]吉他英雄 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 80 Solved: 59[Submit][Stat ...
- BZOJ2287: 【POJ Challenge】消失之物
2287: [POJ Challenge]消失之物 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 254 Solved: 140[Submit][S ...
- BZOJ2295: 【POJ Challenge】我爱你啊
2295: [POJ Challenge]我爱你啊 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 126 Solved: 90[Submit][Sta ...
- BZOJ2296: 【POJ Challenge】随机种子
2296: [POJ Challenge]随机种子 Time Limit: 1 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 114 Solv ...
随机推荐
- MongoDB_GridFS_存储文件
GridFS mongoDB除了保存各种文档(JOSN结构)外还能够保存文件.GridFS规范提供了一种透明机制,可以将一个大文件分割成为多个较小的文档,这样的机制允许我们有效的保存大文件对象,特别对 ...
- 我的2016年终总结(PF项目框架设计心得分享 2.0rc)
在无数的日夜里,熬出了多少的黑眼圈,致勤勤恳恳工作的各位朋友与自己.每到了年末的时候总想写的什么,主要是为了回顾以往一年里到底做了什么,这便是年终总结的主要意义.在此我将要总结的是和我在技术层面上成长 ...
- POJ2185(KMP)
Milking Grid Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 7896 Accepted: 3408 Desc ...
- 在C++中反射调用.NET(一)
为什么要在C++中调用.NET 一般情况下,我们常常会在.NET程序中调用C/C++的程序,使用P/Invoke方式进行调用,在编写代码代码的时候,首先要导入DLL文件,然后在根据C/C++的头文件编 ...
- windows下composer安装不了或composer命令无效的解决办法
安装方法: http://docs.phpcomposer.com/00-intro.html#Installation-Windows (官方中文帮助文档) 问题描述1: 通过Composer-Se ...
- webservice_模拟报文测试
一.WebService测试小工具STORM 二.利用MyEclipse的WebService视图调用webservice Ø 除了客户端生成代码编写程序调用之外.还可以用MyEclipse提供 ...
- ECJTUACM16 Winter vacation training #4 题解&源码
A......................................................................................... 题目链接→Code ...
- salesforce 零基础学习(六十五)VF页面应善于使用变量和函数(一)常用变量的使用
我们在使用formula或者validation rules等的时候通常会接触到很多function,这些函数很便捷的解决了我们很多问题.其实很多函数也可以应用在VF页面中,VF页面有时候应该善于使用 ...
- 构建自动化前端样式回归测试——BackstopJS篇
在使用scss和less开发的时候,遇到过一件很有趣的事,因为网站需要支持响应式,就开了一个响应式样式框架,简单的几百行scss代码,居然生成了近100KB的css代码,因此决定重构这个样式库.而重构 ...
- Java丨博客系统
后台界面: 前台界面: 这是一个由我带着刚入门的几位实习生做的一个博客系统,希望给java入门的学习者一个例子,这个系统还需要完善,主体功能是实现了,还差一些细节,如果需要源码的话可以在下方给我留言! ...