P13783 [eJOI 2022] Bounded Spanning Tree

题目描述

给定一个含有 $n$ 个顶点和 $m$ 条边的连通无向带权图。该图中没有自环(即不存在一条边连接同一个顶点),但某些顶点对之间可能存在多条边。 你的朋友告诉你关于该图的如下信息: - 所有边权值是范围 $[1, m]$ 内的**互不相同的整数**。换句话说,它们构成了 $1$ 到 $m$ 的一个排列。 - 第 $i$ 条边的权值必须落在区间 $[l_i, r_i]$ 内(对每个 $1 \leq i \leq m$)。 - 输入中的前 $n-1$ 条边(即边编号 $1, 2, \ldots, n-1$)必须构成该图的**最小生成树**。 你需要判断这些条件是否有可能同时满足。如果可能,请构造出任意一组符合条件的边权赋值。 回顾一下,生成树是该图的一个边集,包含 $n-1$ 条边,能使图连通并且无环。最小生成树是指所有生成树中边权和最小的那一棵。

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 10^5$),表示测试用例的个数。接下来依次给出 $t$ 个测试用例。 每个测试用例的第一行包含两个整数 $n$ 和 $m$($1 \leq n-1 \leq m \leq 5 \cdot 10^5$),分别表示顶点数和边数。 接下来 $m$ 行中,第 $i$ 行包含四个整数 $u_i, v_i, l_i, r_i$($1 \leq u_i < v_i \leq n,\ 1 \leq l_i \leq r_i \leq m$),表示顶点 $u_i$ 和 $v_i$ 之间有一条边,其权值必须在区间 $[l_i, r_i]$ 内。 保证对于每个测试用例,编号为 $1, 2, \ldots, n-1$ 的边构成一棵生成树。 保证所有测试用例中 $m$ 的总和不超过 $5 \cdot 10^5$。

输出格式

对于每个测试用例: - 如果不存在符合条件的权值赋值方案,则输出一行 `"NO"`。 - 否则,输出一行 `"YES"`,并在下一行输出 $m$ 个整数 $w_1, w_2, \ldots, w_m$($1 \leq w_i \leq m$,互不相同),其中 $w_i$ 表示赋予第 $i$ 条边的权值。 如果存在多个解,输出任意一个即可。 输出时字母大小写不敏感(例如 `"YES"`, `"Yes"`, `"yes"`, `"yEs"` 都视为正确)。

说明/提示

### 评分规则 1. (4 分):所有 $l_i = r_i$($1 \leq i \leq m$) 2. (6 分):所有测试用例中 $m$ 的总和不超过 $10$ 3. (10 分):所有测试用例中 $m$ 的总和不超过 $20$ 4. (10 分):$m = n - 1$ 且所有测试用例中 $m$ 的总和不超过 $500$ 5. (7 分):$m = n - 1$ 6. (20 分):$m = n$ 7. (11 分):所有测试用例中 $m$ 的总和不超过 $5000$ 8. (8 分):对于所有 $1 \leq i \leq n-1$,$u_i = i,\ v_i = i + 1$ 9. (12 分):所有测试用例中 $m$ 的总和不超过 $10^5$ 10. (12 分):无额外限制 --- 翻译由 ChatGPT-5 完成