codeforces 913B Christmas Spruce+链式前向星
2018-01-13 17:31
295 查看
B. Christmas Spruce
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
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
4
1
1
1
output
Yes
input
7
1
1
1
2
2
2
output
No
input
8
1
1
1
1
3
3
3
output
Yes
Note
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 怎么搞 模拟
我每次把这个边都建出来 如果h[i]==0说明我是叶子节点我需要给我的父亲+1
最后都做完了 循环统计一下非叶子节点的值是否都>=3即可**
代码:
涉及到链式前向星:
http://blog.csdn.net/acdreamers/article/details/16902023
所有知识点都在这里了,如果哪里不会,自己遍历一遍就好了;
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
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
4
1
1
1
output
Yes
input
7
1
1
1
2
2
2
output
No
input
8
1
1
1
1
3
3
3
output
Yes
Note
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 怎么搞 模拟
我每次把这个边都建出来 如果h[i]==0说明我是叶子节点我需要给我的父亲+1
最后都做完了 循环统计一下非叶子节点的值是否都>=3即可**
代码:
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> using namespace std; #define N 1005 int cnt ,head ,par ; struct node { int next,to,w; }edge ; int main() { int n; memset(head,0,sizeof(head)); memset(par,0,sizeof(par)); while(~scanf("%d",&n)) { int num=0; for(int i=2;i<=n;i++) { int x; scanf("%d",&x); edge[++num].next=head[x]; head[x]=num; par[i]=x; } for(int i=2;i<=n;i++) { if(!head[i]) ++cnt[par[i]]; } int flag=0; for(int i=1;i<=n;i++) { if(head[i]&&cnt[i]<3) { flag=1; break; } } if(flag==1) { printf("No\n"); } else { printf("Yes\n"); } } }
涉及到链式前向星:
http://blog.csdn.net/acdreamers/article/details/16902023
所有知识点都在这里了,如果哪里不会,自己遍历一遍就好了;
相关文章推荐
- CodeForces 706B Interesting drink (二分查找)
- CodeForces - 344A Magnets (模拟题)
- codeforces 814E An unavoidable detour for home
- CodeForces 137A
- Codeforces 549F Yura and Developers
- CodeForces 706C Hard problem (水DP)
- Codeforces 626C Block Towers(二分)
- CodeForces - 767C Garland dfs(假剪枝)
- codeforces 330A 330B 329A 分别是7月20DIV2的前三题
- Codeforces 551C GukiZ hates Boxes(二分)
- 【字典树】【贪心】Codeforces 706D Vasiliy's Multiset
- codeforces 818D Multicolored Cars
- CodeForces - 445B_DZY Loves Chemistry_并查集
- CodeForces 154B——Colliders——筛选素数,模拟标记
- Codeforces 552E - Vanya and Brackets【表达式求值】
- Codeforces 706c dp
- codeforces 459B Pashmak and Flowers
- CodeForces - 855B Marvolo Gaunt's Ring
- CodeForces 276E - Little Girl and Problem on Trees 区间更新..N+1个线段树
- CodeForces #303E Div.2 Paths and Trees(最短路+拓扑排序)