AT_agc072_e.[AGC072E] Flights 2

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

日本有 NN 个机场,每个机场编号为 1,2,…,N1, 2, \dots, N。AtCoder 航空公司在日本运营着 MM 条航线,每条航线编号为 1,2,…,M1, 2, \dots, M。航线 jj 从机场 AjA_j 出发,抵达机场 BjB_j,票价为 Cj×FC_j \times F 日元。

乘坐 AtCoder 航空公司的飞机可以获得一种名为“里程(マイル)”的货币。初始时你拥有 00 里程。每乘坐一次航线 jj,你可以获得 CjC_j 里程。此外,在机场 ii,每 11 里程可以兑换 RiR_i 日元。由于有约束 0≤Ri≤F−10 \leq R_i \leq F-1,所以无法通过不断换乘飞机来无限制地获得金钱。

需要注意的是,兑换的里程数和所持金可以不是整数,但不能为负数。

现在,想要通过飞机从机场 11 到达机场 NN,你最少需要准备多少日元的初始资金?

请你解答 TESTCASES\mathrm{TESTCASES} 个测试用例。

输入格式

输入通过标准输入给出,格式如下,其中 casek\mathrm{case}_k 表示第 kk 个测试用例。

TESTCASES\mathrm{TESTCASES}
case1\mathrm{case}_1
case2\mathrm{case}_2
⋮\vdots
caseTESTCASES\mathrm{case}_{\mathrm{TESTCASES}}

每个测试用例格式如下:

NN MM FF
A1A_1 B1B_1 C1C_1
A2A_2 B2B_2 C2C_2
⋮\vdots
AMA_M BMB_M CMC_M
R1R_1 R2R_2 ⋯\cdots RNR_N

输出格式

请输出 TESTCASES\mathrm{TESTCASES} 行。第 kk 行输出第 kk 个测试用例中,为了能够通过飞机从机场 11 到达机场 NN,所需的最小初始资金。

当你的答案与标准答案的绝对误差或相对误差不超过 10−610^{-6} 时,视为正确。

输入输出样例

  • 输入#1

    1
    3 2
    10
    1 2 7
    2 3 9
    2 2 2

    输出#1

    146
  • 输入#2

    1
    4 4
    10
    1 2 7
    2 4 9
    2 3 1
    3 2 1
    2 2 9 2

    输出#2

    106
  • 输入#3

    1
    7 8
    100
    3 2 81
    3 4 42
    1 6 97
    4 5 42
    4 1 59
    6 3 34
    5 3 68
    2 7 47
    0 58 37 10 89 16 0

    输出#3

    16354.2758620689655172413793103448275862068965

说明/提示

约束条件

  • 1≤TESTCASES≤40 0001 \leq \mathrm{TESTCASES} \leq 40\,000
  • 2≤N≤4002 \leq N \leq 400
  • 1≤M≤N×(N−1)1 \leq M \leq N \times (N-1)
  • 1≤F≤1001 \leq F \leq 100
  • 1≤Aj≤N1 \leq A_j \leq N
  • 1≤Bj≤N1 \leq B_j \leq N
  • Aj≠BjA_j \neq B_j
  • (A1,B1),(A2,B2),…,(AM,BM)(A_1, B_1), (A_2, B_2), \dots, (A_M, B_M) 均互不相同
  • 1≤Cj≤1001 \leq C_j \leq 100
  • 0≤Ri≤F−10 \leq R_i \leq F-1
  • 存在从机场 11 到机场 NN 的路径
  • 所有测试用例的 N2N^2 之和不超过 160 000160\,000
  • 所有输入均为整数

样例解释 1

如果初始资金为 146146 日元,可以按如下方式从机场 11 到达机场 33:

  1. 乘坐航线 11,从机场 11 到机场 22。所持金变为 146−70=76146 - 70 = 76 日元,获得 77 里程。
  2. 在机场 22,将 77 里程兑换为 1414 日元。所持金变为 76+14=9076 + 14 = 90 日元。
  3. 乘坐航线 22,从机场 22 到机场 33。所持金变为 90−90=090 - 90 = 0 日元,获得 99 里程。
    如果初始资金少于 146146 日元,则无法从机场 11 到达机场 33。

样例解释 2

如果初始资金为 106106 日元,可以按如下方式从机场 11 到达机场 44:

  1. 乘坐航线 11,从机场 11 到机场 22。所持金变为 106−70=36106 - 70 = 36 日元,获得 77 里程。
  2. 乘坐航线 33,从机场 22 到机场 33。所持金变为 36−10=2636 - 10 = 26 日元,获得 11 里程。
  3. 在机场 33,将 88 里程兑换为 7272 日元。所持金变为 26+72=9826 + 72 = 98 日元。
  4. 乘坐航线 44,从机场 33 到机场 22。所持金变为 98−10=8898 - 10 = 88 日元,获得 11 里程。
  5. 在机场 22,将 11 里程兑换为 22 日元。所持金变为 88+2=9088 + 2 = 90 日元。
  6. 乘坐航线 22,从机场 22 到机场 44。所持金变为 90−90=090 - 90 = 0 日元,获得 99 里程。
    如果初始资金少于 106106 日元,则无法从机场 11 到达机场 44。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页