Solution
我们可以先计算每个节点的度。
若 \(deg_i = 1\),只有一条边,可以变成任意值。
若 \(deg_i = 2\),两条边会同时加上一个任意实数,但如果要求这两条边不相等,就无法做到。
若 \(deg_i \ge 3\),以 \(deg_i = 3\) 为例,可以先把这三条边的边权变为 \(0\),然后就可以得到任意值,\(deg_i > 3\) 同理。
Code
完整代码如下
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, deg[N];
int main() {scanf("%d", &n);for (int i = 1, u, v; i < n; i++) {scanf("%d%d", &u, &v);deg[u]++, deg[v]++;}for (int i = 1; i <= n; i++)if (deg[i] == 2) {puts("NO");return 0;}puts("YES");return 0;
}