#abc022c. [abc022_c]Blue Bird
[abc022_c]Blue Bird
问题描述
高桥君所居住的城市中有 个房屋和 条道路。房屋用整数 到 进行编号。高桥君居住在第一个房屋。道路也用整数 到 进行编号。第 条道路是一条连接房屋 和房屋 的双向道路,长度为 米。
高桥君正在寻找一只名为 "幸福的蓝鸟" 的鸟。事实上,"幸福的蓝鸟" 就在高桥君的家里,高桥君也知道这件事。然而,为了增加乐趣,他决定制定一项旅行计划。
高桥君计划从自己的家出发,依次访问一些房屋,但不能经过同一条道路两次,并最终回到自己的家。此外,为了增加乐趣,他计划在旅途中至少访问除自己的家之外的一座房屋。高桥君希望尽快完成这个闹剧,因此他认为通过的道路长度之和最小的计划是最优的。
给定高桥君所在的城市的房屋和道路信息,请判断高桥君是否可以制定最优计划,并计算在此情况下通过的道路长度之和。
输入
输入以以下格式从标准输入中给出:
:
- 第 行为高桥君所在城市的房屋数量 和道路数量 ,以空格分隔。
- 接下来的 行,每行描述一条道路。第 行描述编号为 的道路连接的两个房屋编号 和该道路的长度 ,以空格分隔。
- 对于任意 ,要么 ,要么 。
输出
如果无法制定最优计划,则输出 ;否则,输出通过的道路长度之和,并在末尾加上换行符。
输入示例1
5 7
1 2 2
1 4 1
2 3 7
1 5 12
3 5 2
2 5 3
3 4 5
输出示例1
13
房屋和道路的示意图如下所示:
计划按照 的顺序访问各个房屋时,通过的道路长度之和最小。如果按照 的顺序访问各个房屋,则会经过第一条道路两次,不满足要求。
输入示例2
5 4
1 2 1
1 3 1
1 4 1
1 5 1
输出示例2
-1
不能制定一个不经过同一条道路两次的旅行计划,因此输出 。
输入示例3
10 12
1 4 3
1 9 1
2 5 4
2 6 1
3 7 5
3 10 9
4 7 2
5 6 6
5 8 5
6 8 3
7 9 5
8 10 8
输出示例3
11