#CF671D. Roads in Yusland
Roads in Yusland
markdown
D. 尤斯兰德的公路
| 项目 | 说明 |
|---|---|
| 时间限制 | 秒 |
| 内存限制 | MB |
| 输入 | 标准输入 |
| 输出 | 标准输出 |
尤斯兰德的市长刚刚中了彩票,决定把钱花在有益于城镇的事情上,比如修复镇上的所有道路。
尤斯兰德由 个路口组成,这些路口之间由 条双向道路连接。利用这些道路,可以从任意一个路口到达任意另一个路口。
镇上只有一家道路修复公司,名为“RC 公司”。公司的中心位于 号路口。RC 公司不会按照你指定的道路进行修复。相反,他们在某些路口有工人,这些工人只能修复某些特定的路径。第 个工人可以被支付 枚金币,然后他会修复从 到某个 之间的所有道路,其中 位于从 到 号路口的路径上。
市长请你选择最便宜的方式雇佣一部分工人,以便修复尤斯兰德的所有道路。允许某些道路被修复多次。
如果无法修复所有道路,则输出 。
输入
第一行包含两个整数 和 ()—— 分别表示尤斯兰德的路口数量和工人数量。
接下来 行,每行包含两个整数 和 ()—— 表示第 条道路连接的两个路口编号。
最后 行是对工人的描述,每行包含三个整数 、 和 (,)。这意味着第 个工人可以用 枚金币修复从 到 路径上的所有道路。保证 位于从 到 的路径上。注意 和 可能重合。
输出
如果无法修复所有道路,则输出 。否则输出一个整数 —— 使用“RC 公司”工人修复所有道路所需的最小花费。
样例
输入
6 5
1 2
1 3
3 4
4 5
4 6
2 1 2
3 1 4
4 1 3
5 3 1
6 3 2
输出
8
说明
在第一个样例中,我们应该选择编号为 、、 和 的工人,有些道路会被修复多次,但这是允许的。总花费为 枚金币。