#L3885. 「eJOI2022」Bounded Spanning Tree

    ID: 3784 传统题 2000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>图结构最小生成树贪心数据结构线段树树结构树链剖分

「eJOI2022」Bounded Spanning Tree

「eJOI2022」Bounded Spanning Tree

题目描述

给定一个有 nn 个点 mm 条边的连通无向有边权图。图中没有自环(即,没有从一个点出发的边连向它本身),但是一些点对之间可能有重边。

你的朋友告诉了你关于这张图的如下信息:

  1. 边权是在 [1,m][1,m] 范围中互不相同的整数。换句话说,它们形成了整数 11mm 的某个排列。
  2. 对于 ii11mm,第 ii 条边的边权在 [li,ri][l_i,r_i] 范围中。
  3. 下标为 1,2,,n11,2,\ldots,n-1 的边(输入中前 n1n-1 条边)形成了这个图的一棵最小生成树。

你想要知道这是否是可能的。确定是否存在满足上述条件的一个边权分配方案,并且如果存在,找出一种方案。

:图的一棵生成树是图上任何一个边的子集,这些边可以构成树(nn 个点 n1n-1 条边的连通图)。图的最小生成树是图的所有生成树中边权和最小的生成树。

输入格式

第一行一个整数 tt (1t1051 \leq t \leq 10^5),表示测试点个数。对于每个测试点的描述如下。

每个测试点第一行包含两个整数 nnmm (1n1m51051 \leq n-1 \leq m \leq 5 \cdot 10^5),分别表示图的节点个数和边个数。

接下来 mm 行,第 ii 行包含四个整数 ui,vi,li,riu_i, v_i, l_i, r_i ($1 \leq u_i < v_i \leq n, 1 \leq l_i \leq r_i \leq m$),表示节点 ui,viu_i, v_i 之间有一条边相连,这条边的边权应该在 [li,ri][l_i,r_i] 区间中。

保证对于每个测试点,下标为 1,2,,n11,2,\ldots,n-1 的边会形成给定图的一棵生成树。

保证对于一组数据中的所有测试点,mm 的总和不超过 51055 \cdot 10^5

输出格式

对于每个测试点,如果不存在满足条件的一组边权,第一行输出 NO

否则,第一行输出 YES。第二行输出 mm 个整数 w1,w2,,wmw_1, w_2, \ldots, w_m (1wim1 \leq w_i \leq m),表示边权。其中 wiw_i 表示赋给输入第 ii 条边的边权。这 mm 个整数应该两两不同。

如果有多组解,输出任意一组即可。

对于每个字母,你可以输出任何大小写情况。(例如,YESYesyesyEs 都会被判定为正向答案。)

样例

输入

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

输出

YES
2 3 1 5 4 6
NO
YES
1 2 3 6 4 5

评分

详细子任务及附加限制如下表所示。

子任务编号 附加限制 分值
1 li=ri (1im)l_i = r_i\ (1 \leq i \leq m) 4
2 m10\sum m \leq 10 6
3 m20\sum m \leq 20 10
4 m=n1,m500m = n-1, \sum m \leq 500
5 m=n1m = n-1 7
6 m=nm = n 20
7 m5103\sum m \leq 5 \cdot 10^3 11
8 ui=i,vi=i+1 (1in1)u_i = i, v_i = i+1\ (1 \leq i \leq n-1) 8
9 m105\sum m \leq 10^5 12
10 无附加限制

注:表中 m\sum m 指对于一组测试数据中所有测试点的 mm 之和。