#P16633. [GKS 2017 #F] Catch Them All
[GKS 2017 #F] Catch Them All
题目描述
在 Codejamon Go 发布之后,你和你的许多朋友一样,走上城市街头,尽可能多地捕捉那些毛茸茸的小生物。游戏的目标是前往它们出现的位置,捕捉出现在你城市周围的 Codejamon。你想知道捕捉到所有 Codejamon 需要多长时间!
你的城市包含 个地点,编号为 到 。你从地点 出发。有 条双向道路(编号为 到 )。第 条道路连接一对不同的地点 ,沿任一方向行驶都需要 分钟。保证从地点 出发,可以沿一条或多条道路到达任何其他地点。
在时间 时,一只 Codejamon 会均匀随机地出现在除你当前位置以外的某个地点(时间 时你的当前位置是地点 )。均匀随机意味着它出现在除你当前位置以外的 个地点中每一个的概率恰好为 。当 Codejamon 出现的一瞬间,你可以立即开始朝它移动。当你到达包含 Codejamon 的地点时,你会立刻抓住它,然后新的 Codejamon 会立刻均匀随机地出现在除你当前位置以外的某个地点,依此类推。注意,任何时刻只有一只 Codejamon 存在,你必须先抓住当前这只,下一只才会出现。
给定你城市的地图,计算捕获 只 Codejamon 的期望时间,假设你总是选择任意两个地点之间最快的路线。
输入格式
输入的第一行包含一个整数 :测试用例的数量。接下来有 个测试用例。
每个测试用例的第一行包含三个整数 、 和 ,分别表示地点的数量、道路的数量和要捕捉的 Codejamon 数量。
然后,每个测试用例接着有 行;第 行包含三个整数 、 和 ,表示第 条道路连接地点 和 ,沿任一方向行驶需要 分钟。
输出格式
对于每个测试用例,输出一行,格式为 Case #x: y,其中 是测试用例编号(从 开始), 是捕获 只 Codejamon 的期望时间(以分钟为单位)。如果答案与正确答案的绝对误差或相对误差在 以内,则认为正确。
4
5 4 1
1 2 1
2 3 2
1 4 2
4 5 1
2 1 200
1 2 5
5 4 2
1 2 1
2 3 2
1 4 2
4 5 1
3 3 1
1 2 3
1 3 1
2 3 1
Case #1: 2.250000
Case #2: 1000.000000
Case #3: 5.437500
Case #4: 1.500000
提示
在样例 #1 中,我们只需要捕捉一只 Codejamon。它以相等的概率出现在地点 、、 和 ,这些地点离我们的起始地点 的距离分别是 、、 和 。因此,期望时间为 分钟。
在样例 #2 中,只有两个地点由一条道路连接。每次 Codejamon 出现时,它都会出现在除我们当前位置以外的另一个地点,我们必须沿道路到达那里。因此,我们走那条路 次,每次 分钟,总共 分钟。
样例 #3 使用与样例 #1 相同的地图。两只 Codejamon 出现的位置有 种有序对可能性,计算得出期望为 分钟。
在样例 #4 中,我们需要捕捉的一只 Codejamon 将出现在地点 或地点 。如果它出现在地点 ,我们最好经由 到 再到 的道路,花 分钟到达,而不是走更耗时的 到 道路。因此,期望时间为 分钟。
限制条件
。
。
对于所有 ,。
对于所有 ,。
对于所有 ,有 和/或 。(任意两个地点之间至多有一条道路。)
保证从地点 出发,可以沿一条或多条道路到达任何其他地点。
小数据集(测试集 1 – 可见)
。
。
大数据集(测试集 2 – 隐藏)
。
。
翻译由 DeepSeek V4 Pro 完成