codeforces 913 B. Christmas Spruce 【思维】
2018-01-09 01:56
453 查看
B. Christmas Spruce
time limit per test1 secondmemory limit per test256 megabytes
Consider a rooted tree. A rooted tree has one special vertex called the root. All edges are directed from the root. Vertex u is called a child of vertex v and vertex v is called a parent of vertex u if there exists a directed edge from v to u. A vertex is called a leaf if it doesn’t have children and has a parent.
Let’s call a rooted tree a spruce if its every non-leaf vertex has at least 3 leaf children. You are given a rooted tree, check whether it’s a spruce.
The definition of a rooted tree can be found here.
Input
The first line contains one integer n — the number of vertices in the tree (3 ≤ n ≤ 1 000). Each of the next n - 1 lines contains one integer pi (1 ≤ i ≤ n - 1) — the index of the parent of the i + 1-th vertex (1 ≤ pi ≤ i).Vertex 1 is the root. It’s guaranteed that the root has at least 2 children.
Output
Print “Yes” if the tree is a spruce and “No” otherwise.Examples
input
41
1
1
output
Yesinput
71
1
1
2
2
2
output
Noinput
81
1
1
1
3
3
3
output
YesNote
The first example:The second example:
It is not a spruce, because the non-leaf vertex 1 has only 2 leaf children.
The third example:
题意: 给你一个有根树,规定每个非叶子节点的孩子大于等于3,是否符合
分析: 直接用vector存下,然后利用std::vector.pop_back(),a[i].size()代表i节点的孩子节点个数可以清除最后一个元素,但这里注意我们得倒着枚举,因为这里是清除最后一个元素。
参考代码
#include<bits/stdc++.h> using namespace std; #define ll long long const int N = 1e5 + 10; vector<int> a ; int res ; int main(){ ios_base::sync_with_stdio(0); int n;cin>>n; for(int i = 2;i <= n;i++) { int x;cin>>x; a[x].push_back(i); } bool flg = false; for(int i = 0;i < 1010;i++) { if(a[i].size()) { for(int j = a[i].size() - 1;j >= 0;j--) { if(a[a[i][j]].size()) { a[i].pop_back(); } } if(a[i].size() < 3) flg = true; } } if(flg) cout<<"No"<<endl; else cout<<"Yes"<<endl; return 0; }
如有错误或遗漏,请私聊下UP,thx
相关文章推荐
- codeforces 913 C. Party Lemonade【思维贪心】
- Codeforces 913 C. Party Lemonade (思维)
- CodeForces_485D_Maximum Value_思维
- Codeforces 357D Xenia and Hamming【数学+思维】
- CodeForces - 618D Hamiltonian Spanning Tree 思维
- CodeForces - 844C Sorting by Subsequences (排序+思维)
- Codeforces 198A.About Bacteria(思维)
- Codeforces 527C Glass Carving【思维+模拟】
- codeforces-141【B找规律】【C思维】
- Codeforces 135A-Replacement(思维)
- CodeForces - 818B Permutation Game(贪心+思维)
- Codeforces 430C Xor-tree【Dfs+思维】
- Codeforces 471D MUH and Cube Walls【思维+KMP】
- Codeforces 190D Non-Secret Cypher【思维+RMQ+二分】
- Codeforces-845C:Two TVs(思维)
- 【Codeforces】-701A-Cards(思维)
- Codeforces 703C 思维or计算几何
- Codeforces 757 C Felicity is Coming! 思维+STL
- codeforces-758【B、C思维】
- Codeforces 658C Bear and Forgotten Tree 3【思维】