CF830E Perpetual Motion Machine

题目描述

开发者 Petr 认为他发明了一个永动机。具体来说,他有许多元件,这些元件的工作方式如下: 每个元件有一个控制器,可以设定为任意非负实数。如果控制器设为某个值 $x$,则该控制器每秒消耗 $x^{2}$ 单位的能量。与此同时,任意通过一根电线相连的两个元件,每秒可以产出 $y·z$ 单位的能量,其中 $y$ 和 $z$ 是它们控制器上的值。 Petr 只有有限数量的电线,因此他已经搭建了若干元件和电线的某种结构。他现在关心的是,是否存在一种控制器设定方式,使得系统产生的能量至少不小于消耗的能量,且至少有一个控制器的值不为 $0$。请你帮他判断是否可能,并在可行时给出相应的整数设定值。 保证如果存在满足条件的控制器设定方式,那么一定存在所有控制器取值均为不超过 $10^{6}$ 的整数解。

输入格式

输入包含若干(至少一个)测试用例。第一行包含一个整数,表示测试用例的数量。 每个测试用例前均有一个空行。每个测试用例的第一行包含两个整数 $n$ 和 $m$($1 \leq n \leq 10^{5}$,$0 \leq m \leq 10^{5}$),分别表示方案中元件的数量和电线的数量。 接下来 $m$ 行,每行包含两个整数 $a$ 和 $b$($1 \leq a, b \leq n$),表示元件 $a$ 和 $b$ 之间有一根电线相连。每个元件不会和自身相连,任意两个元件之间最多只有一根电线。 保证所有测试用例的 $n$ 之和和 $m$ 之和均不超过 $10^{5}$。 对于 hack 数据,你只能使用仅包含一个测试用例的数据。

输出格式

对于每个测试用例,输出一行答案。 如果存在一种方案,可以使得总消耗能量不超过总生产能量,且至少有一个控制器不为 $0$,则输出 "YES"(不含引号),并在下一行输出 $n$ 个整数,分别表示每个元件的控制器设定值(取值范围为 $0$ 到 $10^{6}$,且至少有一个值不为 $0$)。如果存在多种方案,输出任意一种均可。 如果无法满足条件,输出一行 "NO"(不含引号)。

说明/提示

在第一个示例中,可以例如这样设定控制器值:将第一个元件的设定为 $1$,第二和第三个元件均设为 $2$,第四个元件设为 $1$。此时总消耗能量为 $1^{2}+2^{2}+2^{2}+1^{2}=10$,总产出能量为 $1·2+2·2+2·1+2·1=10$,因此答案为 "YES"。 在第二个测试用例中,无法满足条件。例如,如果将所有控制器都设为 $0.5$,总消耗能量为 $0.75$,而总产出能量为 $0.5$,因此答案为 "NO"。 由 ChatGPT 5 翻译