#P13624. [ICPC 2024 APC] There and Back Again

[ICPC 2024 APC] There and Back Again

题目描述

亚太地区有 nn 个城市,编号从 11nn。2024 年 ICPC 亚洲及太平洋锦标赛在河内(即城市 nn)举行。有 mm 条双向道路,编号从 11mm,连接着一些城市对。道路 ii 连接城市 uiu_iviv_i,任一方向的旅行时间为 tit_i。每条道路连接不同的城市,且不同的道路连接不同的城市对。

你居住在城市 11。你希望通过一系列道路前往城市 nn 参加比赛,然后再通过一系列道路返回城市 11。走同一条路线很无聊,所以你希望两次行程的路线是不同的。如果两条路线所经过的不同道路的集合是不同的,那么这两条路线就被认为是不同的。

在每次行程中,可以多次经过同一个城市或走同一条道路。在到达目的地城市(即城市 11 或城市 nn)后,也可以继续行进。行程时间是行程中所经过道路的旅行时间之和。如果一条道路在行程中被多次经过,那么它的旅行时间也会被相应地计算多次。

请确定满足上述要求的两次行程的最小总旅行时间,或者指出无法满足要求。

输入格式

输入的第一行包含两个整数 nnmm $(2 \le n \le 100,000; 1 \le m \le \min(\frac{n(n-1)}{2}, 300,000)$。

接下来的 mm 行,每行包含三个整数。第 ii 行包含 ui,viu_i,v_itit_i (1ui<vin;1ti1000)(1 \le u_i < v_i \le n; 1 \le t_i \le 1000)。不同的道路连接不同的城市对。

输出格式

输出一个整数,代表满足上述要求的两次行程的最小总旅行时间;如果无法满足要求,则输出 1-1

3 2
1 2 10
1 3 5
30
4 3
1 2 10
2 3 5
3 4 2
-1
4 4
1 2 3
2 4 2
1 3 3
3 4 4
12
3 1
1 2 1000
-1

提示

样例解释 #1

城市和道路如图 J.1 所示。一种可能的最小化总旅行时间的方式如下:

  • 从城市 1 前往城市 3,途经道路 2(连接城市 1 和 3)。行程时间为 55。经过的道路集合为 {2}\{2\}
  • 从城市 3 前往城市 1,途经道路 2,然后两次经过道路 1(连接城市 1 和 2)。行程时间为 5+10+10=255+10+10=25。经过的道路集合为 {1,2}\{1,2\}

可以证明,没有办法以更小的总旅行时间完成两次行程。

样例解释 #2

城市和道路如图 J.2 所示。从城市 1 前往城市 4 再返回,两次行程都必须经过所有的道路。因此,无法满足上述要求。