ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

题解:CF1188A1 Add on a Tree

题解:CF1188A1 Add on a Tree

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;
}
返回列表