AT_arc108_c [ARC108C] Keep Graph Connected

题目描述

给定一个包含 $N$ 个编号为 $1$ 到 $N$ 的顶点和 $M$ 条编号为 $1$ 到 $M$ 的边的连通无向图。该图中可能存在重边,但不存在自环。 每条边都带有一个标签,该标签是 $1$ 到 $N$ 之间的整数。第 $i$ 条边连接顶点 $u_i$ 和 $v_i$,其标签为 $c_i$。 你需要在每个顶点上写下一个 $1$ 到 $N$ 之间的整数(不同顶点可以写相同的数),然后仅保留满足以下条件的边,其余的边都要删除。 **条件**:设该边两端顶点上写的整数分别为 $x$ 和 $y$,则 $x$ 和 $y$ 中**恰好有一个**等于该边的标签。 删除不满足上述条件的边后,若图仍然连通,则称这种顶点赋值方式为*好的赋值方式*。请判断是否存在好的赋值方式,若存在,请给出一个例子。

输入格式

输入按以下格式从标准输入读入。 > $N$ $M$ > $u_1$ $v_1$ $c_1$ > $\vdots$ > $u_M$ $v_M$ $c_M$

输出格式

如果不存在好的赋值方式,输出 `No`。 如果存在,输出 $N$ 行,第 $i$ 行输出顶点 $i$ 上写的整数。只要是好的赋值方式即可。

说明/提示

### 限制条件 - $2 \leq N \leq 10^5$ - $N-1 \leq M \leq 2 \times 10^5$ - $1 \leq u_i, v_i, c_i \leq N$ - 给定的图是连通的 - 图中没有自环 ### 样例解释 1 - 在顶点 $1,2,3$ 上分别写 $1,2,1$。 - 边 $1$ 连接顶点 $1,2$,标签为 $1$。 - 只有顶点 $1$ 上的数等于标签 $1$,所以边 $1$ 保留。 - 边 $2$ 连接顶点 $2,3$,标签为 $2$。 - 只有顶点 $2$ 上的数等于标签 $2$,所以边 $2$ 保留。 - 边 $3$ 连接顶点 $1,3$,标签为 $3$。 - 两端顶点上的数都不等于标签 $3$,所以边 $3$ 被删除。 - 边 $4$ 连接顶点 $1,3$,标签为 $1$。 - 两端顶点上的数都等于标签 $1$,所以边 $4$ 被删除。 - 删除边 $3,4$ 后,图仍然连通,因此该赋值方式是好的赋值方式。 由 ChatGPT 4.1 翻译