[POI2007] ATR-Tourist Attractions 题目翻译

前言

  • 事情是这样的,蒟蒻在刷专题时写到这题了,由于题目描述十分甚至壹壹肆伍壹肆分抽象,因此急头白脸地翻译,由于bing的翻译也有点抽象比如把参观景点译为访问网站所以还进行了校对,由于蒟蒻英语不好,翻译仅供参考,原文请到原题处看,发现有翻译漏洞请在评论区叫蒟蒻修谢谢你喵

description

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、⋯、k+1。

17730

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

注意,地点4在路线中出现在地点3的前后。这完全没问题,这意味着Byteasar在参观地点3之前不会停留在地点4,因为他的要求不允许这样做。然而,他可以在不停车的情况下经过地点4——这正是他打算做的!

编写一个程序,它可以:

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

input

在标准输入的第一行有三个整数 n、m 和 k,用单个空格分开,\(2≤n≤20000\)\(1≤m≤200000\)\(0≤k≤20\);此外,还满足不等式 \(k≤n−2\)

接下来的 m 行包含道路的描述,每行正好一个。在第 \((i+1)\) '行,有三个整数 \(p_i\)\(q_i\)\(l_i\),用单个空格分开,\(1≤p_i<q_i≤n\)\(1≤l_i≤1000\)。这些数字表示一条连接地点 \(p_i\)\(q_i\) 的长度为 \(l_i\) 的道路。你可以放心地假设,对于每一组测试数据,都可以从 Bitingham 到 Byteburg 以及 Byteasar 想去的每个站点。在第 \((m+1)\) 行有一个整数 g,\(0≤g≤\)\({k·(k−1)} \over {2}\)

这是关于Byteasar想要参观他选择的地点顺序的限制数量。这些限制在接下来的g行中给出,每行一个。(m+i+1)'行包含两个整数\(r_i\)\(s_i\),用一个空格分开,\(2≤r_i≤k+1\)\(2≤s_i≤k+1\),且\(r_i≠s_i\)

这对\(r_i\)\(s_i\)意味着Byteasar想在参观地点\(s_i\)之前先参观地点\(r_i\)。不过,这并不阻止他在参观\(r_i\)之前经过\(s_i\),或者在参观\(s_i\)之后经过\(r_i\)。只要他不在途中停留并参观旅游景点,他随时可以这么做。保证每组测试数据至少存在一种前往所选地点的顺序,同时满足所有限制。

output

在标准输出的第一行也是唯一一行中,应写入一个整数,即从Bitingham到Byteburg的最短路径长度,路径需按正确顺序经过Byteasar选择的所有地点。

posted @ 2026-06-29 15:31  msjing  阅读(10)  评论(0)    收藏  举报