zoukankan      html  css  js  c++  java
  • Codeforces 931D Peculiar apple-tree(dfs+思维)

    题目链接: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
    ",ans);
    34     return 0;
    35 }
  • 相关阅读:
    linux(不会考特别难,牢记下面即可)
    ajax
    Javascript 和 Jquery
    开发环境及配置
    网络协议考点
    面向对象考点
    会话控制
    文件操作
    正则表达式
    自定义函数和内部函数
  • 原文地址:https://www.cnblogs.com/fu3638/p/8509580.html
Copyright © 2011-2022 走看看