#P15602. [2025年山东第一轮集训] 图论题

    ID: 14814 传统题 6000ms 1024MiB 尝试: 1 已通过: 1 难度: 8 上传者: 标签>图论算法基础贪心数据结构线段树树论树链剖分CF2500

[2025年山东第一轮集训] 图论题

题目描述

给定一个有 nn 个点、mm 条边的连通无向有边权图。图中没有自环,但是一些点对之间可能有重边。

关于这张图有如下信息:

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

请确定是否存在满足上述条件的一个边权分配方案,并且如果存在,找出一种方案。

输入格式

第一行一个整数 tt,表示测试点个数。

每个测试点第一行包含两个整数 n,mn,m,分别表示图的节点个数和边数。

接下来 mm 行,第 ii 行包含四个整数:

ui, vi, li, riu_i,\ v_i,\ l_i,\ r_i

表示节点 ui,viu_i,v_i 之间有一条边相连,这条边的边权应该在区间 [li,ri][l_i,r_i] 中。

保证:

1ui<vin,1lirim1\le u_i<v_i\le n,\qquad 1\le l_i\le r_i\le m

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

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

输出格式

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

NO

否则,第一行输出:

YES

第二行输出 mm 个整数:

w1,w2,,wmw_1,w_2,\ldots,w_m

表示边权,其中 wiw_i 表示赋给输入第 ii 条边的边权。这 mm 个整数应该两两不同,并且满足:

1wim1\le w_i\le m

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

样例输入 #1

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

样例输出 #1

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

其余样例见下发文件。

数据范围

对于所有数据,保证:

1t1051\le t\le 10^5 1n1m5×1051\le n-1\le m\le 5\times 10^5 m5×105\sum m\le 5\times 10^5

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

子任务

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

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