#HK5152. 「ROI 2015 Day 2」警报系统

「ROI 2015 Day 2」警报系统

题目描述

译自 ROI 2015 Day2 T4. Сигнализация

地下掩体由 nn 个房间组成,通过 n1n - 1 条走廊相连接。每条走廊连接两个不同的房间,并具有一定的长度。掩体的结构使得从任意房间 ii 可以到达任意其他房间 jj。值得注意的是,存在唯一一条不重复经过同一条走廊的路径。构成该路径的走廊长度之和称为房间 iijj 之间的距离,记为 ρ(i,j)\rho(i, j)

掩体的每个房间都装备有声音报警系统,包括警报器和声音传感器,传感器会触发警报器。在房间 ii 中启动的警报器会激活距离不超过 did_i 的所有房间中的声音传感器,其中 did_i 由该警报器的功率决定。换句话说,在房间 ii 启动警报器会自动触发所有满足 ρ(i,j)di\rho(i, j) \leq d_i 的房间 jj 中的警报器。这些警报器又可能依次触发其他警报器,依此类推。

在紧急情况下,需要手动启动某些警报器,之后它们的声音会自动触发其他房间的警报器。安全规定要求选择一组需要手动启动的警报器,使最终能自动触发所有房间中的警报器。

你的任务是编写一个程序,确定满足安全规定的最小警报器手动启动数量。

输入格式

输入数据的第一行包含一个整数 nn,表示房间数量。

第二行包含 nn 个整数 did_i (0di109)(0 \leq d_i \leq 10^9),第 ii 个数字表示位于房间 ii 的警报器能激活传感器的最大距离。

接下来的 n1n - 1 行描述掩体的走廊。每行包含三个整数 ui,vi,liu_i, v_i, l_i (1ui,vin,1li109)(1 \leq u_i, v_i \leq n, 1 \leq l_i \leq 10^9),其中 uiu_iviv_i 是由第 ii 条走廊连接的两个不同房间的编号,lil_i 是该走廊的长度。

输出格式

输出一行,包含一个整数,表示需要手动启动的最小警报器数量。

10
1 2 2 2 6 3 4 5 4 3
1 2 5
2 3 1
2 4 5
4 5 2
4 6 4
4 7 3
1 8 1
8 9 5
8 10 4

3

在样例中,房间 44 的警报器会触发房间 55 的警报器,而房间 55 的警报器又会触发房间 6677 的警报器。房间 22 的警报器会触发房间 33 的警报器。房间 88 的警报器会触发房间 11991010 的警报器。

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务 分值 nn 的限制
11 1616 1n151 \leq n \leq 15
22 2323 1n1001 \leq n \leq 100
33 1717 1n30001 \leq n \leq 3000
44 2424 1n1000001 \leq n \leq 100\,000
55 2020 1n3000001 \leq n \leq 300\,000