#P12205. [COI 2022] 通行证件 / Vinjete

[COI 2022] 通行证件 / Vinjete

背景

译自 HIO (COI) 2022 T4。

题目描述

Gospodin Malnar 计划在亚洲旅行,访问 NN 个城市。这些城市通过 N−1N-1 条双向高速公路连接,形成一棵树。城市编号为 11 到 NN,起点为 11。

亚洲有 MM 种不同类型的通行证,编号从 11 到 MM。每条高速公路 ii 需要购买编号在 [li,ri][l_i,r_i] 范围内的所有通行证才能通过,第 ii 条公路连接 ai,bia_i,b_i 两点。

你的任务是确定从起点到其他城市 ii (2≤i≤N)(2 \leq i \leq N) 所需购买的最少通行证数量。

输入格式

第一行包含两个整数 NN 和 MM,表示城市数和通行证种类数。

接下来 N−1N-1 行,每行包含四个整数 ai,bi,li,ria_i, b_i, l_i, r_i,表示一条高速公路及其所需通行证区间。

输出格式

输出 N−1N-1 行,第 ii 行表示从城市 11 到城市 i+1i+1 所需的最少通行证数量。

6 6
1 2 2 4
1 3 1 4
2 4 3 5
2 5 5 6
3 6 2 3
3
4
4
5
4
5 6
1 2 2 2
2 3 3 3
3 5 1 5
3 4 1 1
1
2
3
5

提示

【样例解释】

样例 11:

  • 到城市 22 的路径覆盖区间 [2,4][2,4],需 33 个通行证 (2,3,4)(2,3,4)。
  • 到城市 33 的路径覆盖 [1,4][1,4],需 44 个。
  • 到城市 44 的路径合并 [2,4][2,4] 和 [3,5][3,5],结果为 [2,5][2,5],需 44 个 (2,3,4,5)(2,3,4,5)。
  • 到城市 55 的路径包含 [2,4][2,4] 和 [5,6][5,6],合并后需 55 个。
  • 到城市 66 的路径合并 [1,4][1,4] 和 [2,3][2,3],结果为 [1,4][1,4],需 44 个。

样例 22:

  • 到城市 22 只需区间 [2,2][2,2],11 个通行证。
  • 到城市 33 合并 [2,2][2,2] 和 [3,3][3,3],共 22 个。
  • 到城市 44 需合并 [2,2][2,2], [3,3][3,3], [1,1][1,1],总覆盖 [1,3][1,3],需 33 个。
  • 到城市 55 的路径覆盖 [1,5][1,5],需 55 个。

【数据规模与约定】

对于所有数据,满足 1≤N≤1051 \leq N \leq 10^5,1≤M≤1091 \leq M \leq 10^9,1≤ai,bi≤N1 \leq a_i, b_i \leq N, 1≤li≤ri≤M1 \leq l_i \leq r_i \leq M,且道路构成一棵树。

子任务编号 分值 附加限制
11 1111 N≤103N \leq 10^3, M≤103M \leq 10^3
22 1313 N≤103N \leq 10^3, M≤109M \leq 10^9
33 1616 N≤5×104N \leq 5 \times 10^4, M≤5×104M \leq 5 \times 10^4
44 2929 N≤105N \leq 10^5, M≤105M \leq 10^5
55 3131 N≤105N \leq 10^5, M≤109M \leq 10^9