CodeForces - 930A Peculiar apple-tree(dfs搜索)
阿新 • • 發佈:2019-03-15
ems dfs搜索 size ani apple ons stream push 下一個
題目:
給出一個樹,這棵樹上每個結點每一秒都會結出一顆果實,果實每經過一秒就會落向下一個結點,如果一個結點在同一時刻上的果實兩兩抵消,問最後在根節點處一共有多少個果實。
思路:
dfs直接搜索統計這棵樹的每一層上有多少個果實就可以了。如果是奇數個ans++,偶數個不作處理。
代碼:
#include <bits/stdc++.h> #include <cstdio> #include <cstring> #include <iostream> #include <vector> #include <algorithm> #include<queue> #include <iomanip> #define MAX 1000000000 #define inf 0x3f3f3f3f #define FRE() freopen("in.txt","r",stdin) using namespace std; typedef long long ll; const int maxn = 100005; int n,x,ans=0; int deep[maxn]; vector<int> mp[maxn]; void init() { memset(deep,0,sizeof(deep));for(int i=0; i<maxn; i++) { mp[i].clear(); } } void dfs(int cur,int level) { deep[level]++; for(int i=0; i<mp[cur].size(); i++) { dfs(mp[cur][i],level+1); } return; } int main() { init(); scanf("%d",&n); for(int i=2; i<=n; i++) { scanf("%d",&x); mp[x].push_back(i); } dfs(1,1); int ans = 0; for(int i=1; i<=n; i++) { if(deep[i]%2) ans++; } printf("%d\n",ans); return 0; }
CodeForces - 930A Peculiar apple-tree(dfs搜索)