题目名称 829. 旅行
输入输出 travela.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarcqw 于2012-07-03加入
开放分组 全部用户
提交状态
分类标签
图论 最短路
分享题解
通过:20, 提交:80, 通过率:25%
Gravatar水中音 100 0.025 s 0.48 MiB C++
Gravatar水中音 100 0.027 s 0.48 MiB C++
GravatarHouJikan 100 0.028 s 0.37 MiB C++
GravatarSnowDancer 100 0.034 s 2.47 MiB Pascal
Gravatar苏轼 100 0.034 s 3.28 MiB C++
GravatarSatoshi 100 0.040 s 0.36 MiB C++
GravatarMakazeu 100 0.044 s 0.37 MiB C++
GravatarCC 100 0.046 s 0.41 MiB C++
Gravatarczp 100 0.047 s 25.27 MiB Pascal
Gravatarwo shi 刘畅 100 0.049 s 15.67 MiB Pascal
本题关联比赛
20120703
20120703
关于 旅行 的近10条评论(全部评论)
重新审视了一遍Kosaraju…
Gravatar水中音
2014-10-30 06:37 5楼
居然是走路的次数不超过k。。。又不看题
GravatarHouJikan
2014-09-23 18:47 4楼
回复 @Truth.Cirno :
为毛要用并查集???
GravatarOI永别
2014-05-09 16:22 3楼
并查集+tarjan求强连通+特殊处理的spfa
GravatarTruth.Cirno
2012-11-08 19:05 2楼
唉,比赛时因为一个SB错误跪了~~竟然有多组数据
GravatarMakazeu
2012-07-03 20:29 1楼

829. 旅行

★   输入文件:travela.in   输出文件:travela.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述

一天,TZD想从0号村庄游历到n-1号村庄,这n个村庄由m条有向路连接,某两个村庄间可能有多条路相连。
当他在处于同一个强连通分支中的两个村庄间游历时,他可以租辆自行车来骑着,否则的话,就只能步行了。说的再详细点,对于从村庄a到村庄b的每一条路,如果这两个村庄处在同一个强连通分支中,(这意味着你可以从a到达b,也可以从b到达a)那么你可以租一辆自行车来骑行,所用时间为time[a][b]分钟,否则你必须步行通过,所用时间为2*time[a][b]分钟。
TZD想尽快到达目的地,他希望在此过程中步行的路不超过k条。现在你需要为他计算出:在满足步行的路不超过k条的情况下,到达目的地所用的最短时间。


【输入格式】
  输入文件有一组或多组数据每一组数据的第一行有三个整数:n,m,k,含义如上所述(1<=n<=100,  0<=m<=100 000,   0<=k<=10)。
接下来有m行,每行有3个整数a,b,time[a][b],表示从村庄a至村庄b有一条路,骑自行车需time[a][b]分钟,而步行则需2*time[a][b]分钟。(0<=a,b<=n-1 输入文件以单独的一行3个0表示结束。

【输出格式】


  对于每一组测试数据,在一行输出其答案,如果TZD无法在步行不超过k条路的情况下到达目的地,则输出-1。

【样例】

travela.in
5 6 3
0 1 1
0 2 2
2 1 1
1 3 3
3 1 3
3 4 2
0 0 0

travela.out
9