D. 限序远行

    传统题 1000ms 256MiB

限序远行

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

限序远行

题目描述

考察队准备从 11 号营地前往 NN 号营地。共有 NN 个营地和 MM 条单向道路,营地编号为 1,2,…,N1,2,\ldots,N,道路编号为 1,2,…,M1,2,\ldots,M。第 ii 条道路从营地 AiA_i 通向营地 BiB_i,长度为 CiC_i。

考察队拿到了一张长度为 KK 的道路清单 E1,E2,…,EKE_1,E_2,\ldots,E_K。队员可以划去清单中的任意若干项,再按照剩余项的顺序依次走过对应道路。每次走一条道路时,队员所在的营地必须是这条道路的起点;走完后到达它的终点。

考察队希望从 11 号营地出发,最终停在 NN 号营地,并让走过的道路总长度尽可能大。请计算这个最大值。如果无法按规则到达 NN 号营地,输出 −1-1。

清单中同一个道路编号可以出现多次;每一项最多使用一次,但不同位置上的相同编号可以分别使用。清单中的项目可以跳过,不能调换顺序。营地和道路均可重复经过,也可以在到达 NN 号营地后继续出发,只要最终仍停在 NN 号营地即可。没有保证道路构成无环图。

输入格式

第一行包含三个整数 N,M,KN,M,K,分别表示营地数、道路数和清单长度。

接下来 MM 行,第 ii 行包含三个整数 Ai,Bi,CiA_i,B_i,C_i,表示第 ii 条道路的起点、终点和长度。道路只能从 AiA_i 走向 BiB_i。

最后一行包含 KK 个整数 E1,E2,…,EKE_1,E_2,\ldots,E_K,依次表示清单中的道路编号。

数据保证:

  • 2≤N≤2×1052\leq N\leq 2\times 10^5;
  • 1≤M,K≤2×1051\leq M,K\leq 2\times 10^5;
  • 1≤Ai,Bi≤N1\leq A_i,B_i\leq N,且 Ai≠BiA_i\ne B_i;
  • 1≤Ci≤1091\leq C_i\leq 10^9;
  • 1≤Ei≤M1\leq E_i\leq M;
  • 所有输入均为整数。

不同道路可以有相同的起点和终点,但道路编号不同。道路两端的编号不要求递增。

输出格式

输出一个整数,表示合法行程的最大总长度。无法到达 NN 号营地时,输出 −1-1。

输入输出样例

输入 #1

3 3 5
1 2 4
2 1 3
1 3 5
1 2 3 1 3

输出 #1

12

输入 #2

2 2 3
1 2 6
2 1 2
1 2 1

输出 #2

14

输入 #3

3 2 2
1 2 5
2 3 8
2 1

输出 #3

-1

样例说明

样例 1 中,可以保留清单的前三项,依次走道路 1,2,31,2,3,行程为 1→2→1→31\to 2\to 1\to 3,总长度为 4+3+5=124+3+5=12。也可以跳过一些项目,但无法得到更长的合法行程。

样例 2 中,三个项目全部使用,行程为 1→2→1→21\to 2\to 1\to 2,总长度为 6+2+6=146+2+6=14。第一次到达终点后仍然可以继续走。道路 11 对应清单中的两个不同位置,因此可以经过两次。

样例 3 中,清单先给出道路 22。此时尚未到达道路 22 的起点,只能跳过它。之后即使使用道路 11 到达营地 22,也不能回头使用已经跳过的清单项目,因此无法到达营地 33。

【睿爸信奥】入门组算法周赛(20260927)

未参加
状态
已结束
规则
IOI
题目
4
开始于
2026-9-27 0:00
结束于
2026-10-4 0:00
持续时间
4 小时
主持人
参赛人数
12