题目名称 1866. [国家集训队2011]星际探险
输入输出 exploration.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatarcstdio 于2014-12-10加入
开放分组 全部用户
提交状态
分类标签
最短路
分享题解
通过:7, 提交:12, 通过率:58.33%
Gravatarlalalala 100 0.113 s 23.20 MiB C++
Gravatarrewine 100 0.121 s 130.66 MiB C++
Gravatarcstdio 100 0.136 s 0.75 MiB C++
Gravatarmikumikumi 100 0.136 s 1.17 MiB C++
Gravatar514flowey 100 0.148 s 2.86 MiB C++
Gravatar栋霸霸 100 0.151 s 130.66 MiB C++
Gravatarlalalala 100 0.152 s 23.21 MiB C++
Gravatarrewine 20 0.084 s 1.62 MiB C++
Gravatarlalalala 20 0.127 s 23.21 MiB C++
Gravatarlalalala 0 0.115 s 1.02 MiB C++
关于 星际探险 的近10条评论(全部评论)
Gravatarrewine
2017-07-22 12:01 2楼
特别的构造技巧……
Gravatarcstdio
2014-12-10 20:27 1楼

1866. [国家集训队2011]星际探险

★★   输入文件:exploration.in   输出文件:exploration.out   评测插件
时间限制:1 s   内存限制:512 MiB

【试题来源】

2011中国国家集训队命题答辩


【问题描述】

众所周知,新世纪的科学很发达,于是Ray 和DarkRaven 开始了星
际探险,他们在宇宙中开辟了一片空间,建造了N 个空间站。这N 个空
间站由一些单向的时空隧道连接,这些时空隧道都有一个穿越指数,穿过
这些时空隧道,你可以走到未来或者回到过去,当然,这些都是由穿越指
数决定的。
有一天,Ray 和DarkRaven 开始了一场比赛。他们要从一个空间站S
出发去另一个空间站T,先到的人获胜。DarkRaven 一定会选一条能最快
到达T 的路线。他希望Ray 输给他,所以事先在Ray 的飞船上设定了飞
行路径,使得Ray 从S 到T 只能走一条特定的路径。但是,Ray 有对策,
他有一台能够操纵时空隧道的机器,这台机器每次可以把某一条时空隧道
的穿越指数增加或减少1,但是因为操纵机器很累,所以Ray 希望尽可能
少改动,当然,如果改动后从某个空间站经过一系列的穿越可以在从这个
空间站出发之前回到这个空间站,那么这样的改动是不允许的。修改之后,
DarkRaven 依然会走能最快到达终点的路线,所以Ray 是不可能赢的。但
他请你帮助他确定改动时空隧道的方案,使得他能和DarkRaven 同时到达
T。

【输入格式】

输入的第一行包含两个整数N 和M,代表空间站的数目和时空隧道
的数目。N  接下来M 行,每行三个整数u、v 和w,代表从空间站u 到空间站
v 有一条时空隧道,它的穿越指数是w。u,v是0 ... N - 1。
第M + 2 行包含一个整数p,代表DarkRaven 在Ray 的飞船上设定
的那条路径的空间站数。第M + 3 行包含p 个数,那条路径上的空间站的
编号,第一个数是S,最后一个数是T。

【输出格式】

输出的第一行包含一个整数,表示Ray 走那条路径并且能够赢得比赛
的情况下操纵时间机器的最小次数。
接来来输出M 行,其中第i 行输出一个整数w,表示把输入中第i 条
时空隧道的穿越指数增加w, w 可以是负数。
4
如果第一问(操纵时间机器的最小次数)正确,可以得到该测试点
20% 的分数,如果在此基础上方案可行,能得到该测试点100% 的分数。

【样例输入】

3 3
0 1 1
1 2 2
0 2 1
3
0 1 2

【样例输出】

2
0
0
2

【数据规模】

一共有10 个数据,对于第i (1 ≤ i ≤ 10) 个数据, N = i * 500,M = i * 5000。