CF1188A1 Add on a Tree
题目描述
注意,这是两个类似问题中的第一个。只有当你同时解决了这两个问题时,才能对本题进行 hack。
给定一棵有 $n$ 个节点的树。初始时,所有边上的数值均为 $0$。每次操作,你可以选择任意两个不同的叶子节点 $u$、$v$,以及任意实数 $x$,然后将 $x$ 加到从 $u$ 到 $v$ 的简单路径上的所有边上。
例如,下图展示了对图进行两次操作的结果:先在从 $7$ 到 $6$ 的路径上加上 $2$,再在从 $4$ 到 $5$ 的路径上加上 $-0.5$。

请判断:对于任意一种边上实数的配置,是否都能通过有限次上述操作实现?
叶子节点是指度为 $1$ 的节点。简单路径是指不包含重复节点的路径。
输入格式
第一行包含一个整数 $n$($2 \le n \le 10^5$),表示节点数。
接下来的 $n-1$ 行,每行包含两个整数 $u$ 和 $v$($1 \le u, v \le n$,$u \neq v$),表示节点 $u$ 和 $v$ 之间有一条边。保证这些边构成一棵树。
输出格式
如果存在某种边上实数的配置无法通过上述操作实现,输出 "NO"。
否则,输出 "YES"。
输出时字母大小写均可。
说明/提示
在第一个样例中,我们可以对唯一的边 $(1, 2)$ 加上任意实数 $x$。

在第二个样例中,存在一种无法实现的配置:边 $(1, 2)$ 上为 $0$,边 $(2, 3)$ 上为 $1$。

下方为样例 $3$、$4$ 的图示:
 
由 ChatGPT 4.1 翻译