某大型数据中心内部由 N 个计算节点组成,这些节点之间通过 N-1 条基础通信链路构成一棵连通的树结构(即任意两个节点之间均存在唯一的一条路径)。
每一条基础链路都承担着关键的数据传输任务,但工程师担心:如果某一条基础链路发生故障,将导致整个系统被分割为两个互不连通的子系统。
为提升系统的容错能力,工程师额外部署了 M 条备用通信链路。这些备用链路可以在基础链路失效时临时启用,用于重新连接被分割的两个子系统。每条备用链路连接两个节点,并具有一个启用该备用链路的传输代价。
现在,对于每一条基础链路,假设该链路发生故障,请你从所有备用链路中选择一条能够重新连通两个子系统的链路,如果有多条可用的备用链路,则选择启用代价最小的备用链路。
如果不存在这样的备用链路,则输出 -1。
第一行包含两个整数 N 和 M,分别表示节点数量和备用链路数量。
接下来 N-1 行,每行包含两个整数 u, v,表示一条基础通信链路,连接节点 u 和节点 v。
接下来 M 行,每行包含三个整数 u, v, w,表示一条备用通信链路,连接节点 u 和节点 v,其代价为 w。
保证任意两节点之间至多存在一条链路(无论是基础链路还是备用链路)。
对于每一条基础链路,按照输入顺序,输出一个整数:
6 3 1 2 1 3 4 1 4 5 6 5 2 3 7 3 6 8 6 4 5
7 7 8 5 5
12 6 1 2 1 3 1 4 2 5 2 6 3 7 3 8 4 9 4 10 10 11 11 12 5 6 50 7 8 40 5 7 30 9 11 20 9 12 25 2 3 15
15 15 -1 30 50 30 40 20 20 20 25
20 8 1 3 1 2 2 4 2 5 3 6 3 7 4 8 4 9 5 10 5 11 6 12 6 13 7 14 7 15 8 16 9 17 10 18 11 19 14 20 16 17 5 18 19 8 12 13 12 15 20 10 16 18 15 17 19 20 8 10 30 1 20 50
50 -1 15 15 -1 50 5 5 8 8 12 12 10 10 5 5 8 8 10
基础链路构成如下结构(可视为一棵树):
备用链路如下:
逐条分析基础链路失效后的情况:
链路 (1,2) 失效
系统被分为:{2} 与 {1,3,4,5,6}
可连接两部分的备用链路:
链路 (1,3) 失效
分为:{3} 与 {1,2,4,5,6}
可选:
链路 (4,1) 失效
分为:{4,5,6} 与 {1,2,3}
可选:
链路 (4,5) 失效
分为:{5,6} 与 {1,2,3,4}
可选:
链路 (6,5) 失效
分为:{6} 与 {1,2,3,4,5}
可选:
对于 10\% 的数据,满足 2 \le N \le 500,1 \le M \le 1000。
对于 100\% 的数据,满足 2 \leq N \leq 5 \times 10^4,1 \leq M \leq 5 \times 10^4,1 \leq u,v \leq N,1 \leq w \leq 10^9。
数据保证基础链路构成一棵树,且任意两点之间最多存在一条链路。