题目:http://codeforces.com/contest/1189/problem/D1
题意:给定一棵树,可以选择任意两个叶子节点对他们的路径增加一定的权值。
问对于给定的这棵树,是否可以得到任意形式的权值。
思路:
只要有一个节点的度是2,那么这个节点连接的某一条边一定受到另一条边的控制。
1 #include<cstdio> 2 #include<cstdlib> 3 #include<map> 4 #include<set> 5 #include<cstring> 6 #include<algorithm> 7 #include<vector> 8 #include<cmath> 9 #include<stack> 10 #include<queue> 11 #include<iostream> 12 13 #define inf 0x3f3f3f3f 14 using namespace std; 15 typedef long long LL; 16 typedef pair<int, int> pr; 17 18 int n; 19 const int maxn = 1e5 + 5; 20 int deg[maxn]; 21 22 int main() 23 { 24 scanf("%d", &n);; 25 for(int i = 1; i < n; i++){ 26 int u, v; 27 scanf("%d%d", &u, &v); 28 deg[u]++; 29 deg[v]++; 30 } 31 int ans = true; 32 for(int i = 1; i <= n; i++){ 33 if(deg[i] == 2){ 34 ans = false; 35 break; 36 } 37 } 38 if(ans){ 39 printf("YES\n"); 40 } 41 else{ 42 printf("NO\n"); 43 } 44 return 0; 45 }
codeforces#572Div2 D1---Add On A Tree【思维】
原文:https://www.cnblogs.com/wyboooo/p/11155682.html