#P3885. 「eJOI2022」Bounded Spanning Tree

「eJOI2022」Bounded Spanning Tree

题目描述

本题译自 eJOI2022 Problem C. Bounded Spanning Tree

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

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

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

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

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

输入格式

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

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

接下来 mm 行,第 ii 行包含四个整数 $u_i,v_i,l_i,r_i\ (1\le u_i<v_i\le n,1\le l_i\le r_i\le 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,,wm (1wim)w_1,w_2,\ldots,w_m\ (1\le w_i\le 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

评分

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

子任务编号 附加限制 分值
11 li=ri (1im)l_i=r_i\ (1\le i\le m) 44
22 m10\sum m\le 10 66
33 m20\sum m\le 20 1010
44 m=n1,m500m=n-1,\sum m\le 500
55 m=n1m=n-1 77
66 m=nm=n 2020
77 m5103\sum m\le 5\cdot 10^3 1111
88 ui=i,vi=i+1 (1in1)u_i=i,v_i=i+1\ (1\le i\le n-1) 88
99 m105\sum m\le 10^5 1212
1010 无附加限制

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