A85964.「NOI2020」翻修道路

NOI/NOI+/CTSC

通过率:0%

时间限制:2.00s

内存限制:1024MB

题目描述

C 国中包含 nn 座城市,这些城市通过 mm 条双向道路连接。城市从 11nn 编号,道路从 11mm 编号,ii 号道路两端连接着城市 uiu_i 与城市 viv_i,它的长度为 wiw_i 米。经由这些道路,从 C 国中任意一个城市出发,均能到达其他所有城市。

C 国人民喜欢环路旅程,但又不喜欢经过太多条道路,为此 C 国的道路被建造得非常特殊。更具体地,对于一条经过 ll 条道路的简单环路(即除起点城市外不经过重复城市的环路),它可以表示为 c1c2clc1c_1 \rightarrow c_2 \rightarrow \cdots \rightarrow c_l \rightarrow c_1(其中对于所有 1i<l1\le i < l,城市 cic_i 与城市 ci+1c_{i+1} 有道路相连;城市 clc_l 与城市 c1c_1 有道路相连;对于所有 1i<jl1\le i < j\le l,有 cicjc_i \neq c_j),若 l>3l > 3,则 C 国的道路将满足下列条件:

  • 存在两个在该环路上不相邻的城市 u,vu, v,满足两个城市间有道路直接相连。即:存在 1u<vl1\le u < v\le l,使得 vu2v - u \ge 2uuvv 不同时为 11ll,并且城市 cuc_u 与城市 cvc_v 间有道路直接相连。

现在 C 国有了新的翻修计划,需要在城市 ss 与城市 tt 间寻找一条路径进行翻修。翻修时路径中包含的所有道路将无法通行,为了保障人民的日常生活,C 国希望在翻修这条路径时,经由剩余的道路(即没被包含在翻修路径内的道路)依然能满足:从 C 国中任意一个城市出发,均能到达其他所有城市

C 国找到了身为工程大师的你,请你帮助 C 国找出一条满足上述要求的翻修路径,并使得这条路径的总长尽量小

输入格式

从文件 road.in 中读入数据。

第一行两个整数 n,mn,m 分别表示城市个数与道路条数。

接下来 mm 行每行三个整数 ui,vi,wiu_i, v_i, w_i,依次表示每条道路的两个端点与它的长度。

数据保证每条道路都一定连接两个不同城市,即 uiviu_i \neq v_i

最后一行两个整数 s,ts, t,分别表示需要翻修的路径的两个端点。

输出格式

输出到文件 road.out 中。

仅一行一个整数,表示满足题目要求的情况下,翻修路径的总长的最小值。

如果不存在满足题目要求的路径,输出一行一个整数 1-1

说明/提示

对于所有测试点:2n5×1052\le n\le 5\times 10^52m1062\le m\le 10^6sts \neq t

1ui,vin1\le u_i, v_i\le nuiviu_i \neq v_i1wi1091\le w_i\le 10^9,保证任意两条道路它们的端点不全相同。

保证给出的道路满足题面描述第二段中的性质。

每个测试点的具体限制见下表:

测试点编号 nn\le mm\le 特殊限制
161\sim6 20002000 40004000
7107\sim10 5×1055\times 10^5 10610^6 A
111511\sim15 5×1055\times 10^5 10610^6 B
162016\sim20 5×1055\times 10^5 10610^6

特殊限制 A:所有道路的长度均相等。

特殊限制 B:所有 wi=1w_i = 1 的道路恰好构成 sstt 的一条路径,且其他 wi1w_i \neq 1 的道路的两条端点在这条路径上距离为 22

首页