4166 - 通信链路(backup)

题目描述

某大型数据中心内部由 N 个计算节点组成,这些节点之间通过 N-1基础通信链路构成一棵连通的树结构(即任意两个节点之间均存在唯一的一条路径)。

每一条基础链路都承担着关键的数据传输任务,但工程师担心:如果某一条基础链路发生故障,将导致整个系统被分割为两个互不连通的子系统。

为提升系统的容错能力,工程师额外部署了 M 条备用通信链路。这些备用链路可以在基础链路失效时临时启用,用于重新连接被分割的两个子系统。每条备用链路连接两个节点,并具有一个启用该备用链路的传输代价。

现在,对于每一条基础链路,假设该链路发生故障,请你从所有备用链路中选择一条能够重新连通两个子系统的链路,如果有多条可用的备用链路,则选择启用代价最小的备用链路。

如果不存在这样的备用链路,则输出 -1

输入

第一行包含两个整数 NM,分别表示节点数量和备用链路数量。

接下来 N-1 行,每行包含两个整数 u, v,表示一条基础通信链路,连接节点 u 和节点 v

接下来 M 行,每行包含三个整数 u, v, w,表示一条备用通信链路,连接节点 u 和节点 v,其代价为 w

保证任意两节点之间至多存在一条链路(无论是基础链路还是备用链路)。

输出

对于每一条基础链路,按照输入顺序,输出一个整数:

  • 表示当该链路失效时,能够连接两个子系统的备用链路的最小启动代价。
  • 若不存在这样的备用链路,输出 -1
样例

输入

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 说明

基础链路构成如下结构(可视为一棵树):

  • 1 连接 2,3,4
  • 4 连接 5
  • 5 连接 6

备用链路如下:

  • (2,3),代价 7
  • (3,6),代价 8
  • (6,4),代价 5

逐条分析基础链路失效后的情况:

  1. 链路 (1,2) 失效
    系统被分为:{2}{1,3,4,5,6}
    可连接两部分的备用链路:

    • (2,3),代价 7
      最优为 7
  2. 链路 (1,3) 失效
    分为:{3}{1,2,4,5,6}
    可选:

    • (2,3),代价 7
      最优为 7
  3. 链路 (4,1) 失效
    分为:{4,5,6}{1,2,3}
    可选:

    • (3,6),代价 8
      最优为 8
  4. 链路 (4,5) 失效
    分为:{5,6}{1,2,3,4}
    可选:

    • (6,4),代价 5
    • (3,6),代价 8
      最优为 5
  5. 链路 (6,5) 失效
    分为:{6}{1,2,3,4,5}
    可选:

    • (6,4),代价 5
    • (3,6),代价 8
      最优为 5

数据范围

对于 10\% 的数据,满足 2 \le N \le 5001 \le M \le 1000

对于 100\% 的数据,满足 2 \leq N \leq 5 \times 10^41 \leq M \leq 5 \times 10^41 \leq u,v \leq N1 \leq w \leq 10^9

数据保证基础链路构成一棵树,且任意两点之间最多存在一条链路。

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 0
通过人数 0
金币数量 4 枚
难度 基础


上一题 下一题