QOJ.ac

QOJ

Límite de tiempo: 2 s Límite de memoria: 64 MB Puntuación total: 100

#12685. 旅游景点

Estadísticas

Byteasar 正从 Bitingham 前往 Byteburg。他希望在途中参观一些必看景点,包括一些有趣的古迹、精致的餐厅以及众多其他旅游景点。他参观这些地点的顺序并非完全无关紧要。例如,Byteasar 不希望在 Digitest 享用丰盛的晚餐后立即攀登 Bitfork 城堡的尖塔;同样,他宁愿在晚餐后去 Zip City(有些人称之为 Sip City)喝一杯著名的 Compresso 咖啡,而不是在晚餐前。幸运的是,他的行程在一定程度上是灵活的,他可以在几种顺序之间进行选择。由于油价高昂,为了经济起见,他希望走尽可能短的路线。请作为好朋友帮助他确定满足其要求的最短路径长度。

道路系统由 $n$ 个地点和连接它们的 $m$ 条道路组成。地点编号从 $1$ 到 $n$,道路编号也从 $1$ 到 $m$。每条道路连接一对不同的地点,且是双向的。得益于巧妙的立交桥和隧道系统,不同的道路仅在地点(即它们的端点)处相交,而在地点之外不会交叉。每条道路都有一定的长度。一对地点之间最多可以直接由一条道路连接,尽管它们之间可能存在许多由至少两条直接道路组成的路径。

设 $k$ 为 Byteasar 想要参观的地点数量。Bitingham 的编号为 $1$,Byteburg 的编号为 $n$,而 Byteasar 想要参观的地点编号为 $2, 3, \dots, k+1$。

图中展示了一个示例道路系统。假设 Byteasar 想要参观地点 2、3、4 和 5,并且他希望在 3 之前参观 2,在 3 之后参观 4 和 5。那么最短路线经过地点 1、2、4、3、4、5、8,其长度为 19。

请注意,地点 4 在路线中出现在地点 3 之前和之后。这是完全可以的,意味着 Byteasar 在访问地点 3 之前不会在那里停留,因为他的要求不允许这样做。然而,他被允许在访问地点 3 之前经过地点 4 而不进行停留——而这正是他将要做的!

编写一个程序:

  • 从标准输入读取道路系统的描述、Byteasar 选择参观的地点列表以及关于他想要参观这些地点的顺序限制;
  • 确定以适当顺序经过所有选定地点的最短路线长度;
  • 将结果写入标准输出。

输入格式

标准输入的第一行包含三个整数 $n$、$m$ 和 $k$,由空格分隔,$2 \le n \le 20\,000$,$1 \le m \le 200\,000$,$0 \le k \le 20$;此外,满足不等式 $k \le n-2$。

接下来的 $m$ 行包含道路的描述,每行一条。第 $(i+1)$ 行包含三个整数 $p_i$、$q_i$ 和 $l_i$,由空格分隔,$1 \le p_i < q_i \le n$,$1 \le l_i \le 1\,000$。这些数字表示连接地点 $p_i$ 和 $q_i$ 的长度为 $l_i$ 的道路。你可以确信对于每组测试数据,从 Bitingham 到 Byteburg 以及到 Byteasar 想要参观的每个地点都是可达的。

在第 $(m+1)$ 行有一个整数 $g$ ($0 \le g \le \frac{k(k-1)}{2}$),这是关于 Byteasar 想要参观其所选地点顺序的限制数量。这些限制在接下来的 $g$ 行中给出,每行一条。第 $(m+i+1)$ 行包含两个整数 $r_i$ 和 $s_i$,由空格分隔,$2 \le r_i \le k+1$,$2 \le s_i \le k+1$,$r_i \neq s_i$。这对数字 $r_i$ 和 $s_i$ 意味着 Byteasar 想要在访问 $s_i$ 之前访问 $r_i$。然而,这并不妨碍他在访问 $r_i$ 之前经过 $s_i$,也不妨碍他在访问 $s_i$ 之后经过 $r_i$。只要他不进行停留和参观旅游景点,他可以自由地这样做。保证对于每组测试数据,至少存在一种满足所有限制的参观所选地点的顺序。

输出格式

在标准输出的第一行也是唯一一行中,写入一个整数,即从 Bitingham 出发,按适当顺序经过所有选定地点的最短路径长度。

样例

输入 1

8 15 4
1 2 3
1 3 4
1 4 4
1 6 2
1 7 3
2 3 6
2 4 2
2 5 2
3 4 3
3 6 3
3 8 6
4 5 2
4 8 6
5 7 4
5 8 6
3
2 3
3 4
3 5

输出 1

19

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.