题号:NC247917
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
Special Judge, 64bit IO Format: %lld
题目描述
给出一棵

个点以

为根的树,你需要给每个点赋上一个权值

或

,使得 子树中所有点的权值全为

的子树数量 与 子树中所有点的权值全为

的子树数量 相等。
若无解输出 “NO”。若有多组符合条件的赋权方式输出任意一种即可。
输入描述:
第一行一个数

。
接下来

行,每行两个正整数

表示树上点

与点

之间连有一条边。
数据保证

。
输出描述:
若无解输出 “NO”。
反之输出两行,第一行一个字符串 "YES"(均不含引号),接下来一行

个整数描述了你给每个点赋的权值,其中第

个整数为点

的权值。