Codeforces 931D Peculiar apple-tree(dfs+思维).cpp

Posted Yeader

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 931D Peculiar apple-tree(dfs+思维).cpp相关的知识,希望对你有一定的参考价值。

题目链接:http://codeforces.com/contest/931/problem/D

题目大意:给你一颗树,每个节点都会长苹果,然后每一秒钟,苹果往下滚一个。两个两个会抵消苹果。问最后在根节点能收到多少个苹果。

解题思路:昨天是我想复杂了,其实就是统计下每层的苹果数,若是奇数则答案+1。因为最终这些苹果都会滚落汇聚到根节点,所以在滚落过程中肯定会碰撞并相消无论苹果是怎么分布的。

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<vector>
 5 #include<algorithm>
 6 using namespace std;
 7 const int N=1e5+5;
 8 
 9 int dep_num[N];
10 vector<int>v[N];
11 
12 void dfs(int u,int dep){
13     dep_num[dep]++;
14     for(int i=0;i<v[u].size();i++){
15         int t=v[u][i];
16         dfs(t,dep+1);
17     }
18 }
19 
20 int main(){
21     int n;
22     scanf("%d",&n);
23     for(int i=2;i<=n;i++){
24         int fa;
25         scanf("%d",&fa);
26         v[fa].push_back(i);
27     }
28     dfs(1,1);
29     int ans=0;
30     for(int i=0;i<N;i++){
31         ans+=dep_num[i]%2;
32     }
33     printf("%d\n",ans);
34     return 0;
35 }

 

以上是关于Codeforces 931D Peculiar apple-tree(dfs+思维).cpp的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round) D. Peculiar apple-tree

peculiar|retreated|civilize|conceivable

CF#468 div2 D. Peculiar apple-tree(思维)

c++中lock_guard以及unique_lock的区别

codeforces上怎么看测试数据

如何看codeforces做了多少题