Michael_Bryant最喜欢的G(al)G(ame)

那些悲伤,那些寂寞,那些几乎让自己放弃生活的希望的痛苦的回忆,绝对绝对不要将它们忘记。

Michael_Bryant最喜欢的番剧

抱歉⋯我已经绝对不可能再获得幸福了,因为⋯我发现⋯ 其实我⋯ 早就已经被幸福包围了

Michael_Bryant正在看的番剧

死亡一点也不温柔,只有无尽的黑暗和孤独。 就算联系得再紧密,人也是孤独的。

bzoj 1598: [Usaco2008 Mar]牛跑步

题目链接

传送门

Description

BESSIE准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘, 然后走回牛棚. BESSIE也不想跑得太远,所以她想走最短的路经. 农场上一共有M (1 <= M <= 10,000)条路, 每条路连接两个用1..N(1<= N <= 1000)标号的地点. 更方便的是,如果X>Y,则地点X的高度大于地点Y的高度. 地点N是BESSIE的牛棚;地点1是池塘. 很快, BESSIE厌倦了一直走同一条路.所以她想走不同的路,更明确地讲,她想找出K (1 <= K <= 100)条不同的路经.为了避免过度劳累,她想使这K条路经为最短的K条路经. 请帮助BESSIE找出这K条最短路经的长度.你的程序需要读入农场的地图, 一些从X_i到Y_i 的路经和它们的长度(X_i, Y_i, D_i). 所有(X_i, Y_i, D_i)满足(1 <=Y_i < X_i; Y_i < X_i <= N, 1 <= D_i <= 1,000,000).

Input

第1行: 3个数: N, M, 和K
第 2..M+1行: 第 i+1 行包含3个数 X_i, Y_i, 和 D_i, 表示一条下坡的路.

Output

第1..K行: 第i行包含第i最短路经的长度,或-1如果这样的路经不存在.
如果多条路经有同样的长度,请注意将这些长度逐一列出.

Sample Input

5 8 7

5 4 1

5 3 1

5 2 1

5 1 1

4 3 4

3 1 1

3 2 1

2 1 1

Sample Output

1

2

2

3

6

7

-1

输出解释:

路经分别为(5-1), (5-3-1), (5-2-1), (5-3-2-1), (5-4-3-1),

(5-4-3-2-1).

题解

Astar搞k短路裸题
题中提到了
单向边
为了方便我用所有的边和所有的反向边建了两个图
然后反向图跑终点(也就是1)到所有点的最短距离
正向图跑A*
估值函数有两个部分
f(x)=g(x)+h(x) f(x)是总距离
其中h(x)就是dis[x] 当前到达这个点的距离
g(x)是剩下的

代码

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注

隐藏