問題が読みにくくてなんかしんどかった。
http://codeforces.com/contest/930/problem/A
問題
花序が与えられる。花序は根付き木を成すように配置されている。
各花序において1つずつリンゴの実がなる。
ただし、根からの距離が等しい2個の実があるとそれらは合わせて消滅する。
最終的に残る実の数はいくつか。
解法
適当に木を辿って、各深さに相当する実の数の偶奇を判定するだけ。
int N; int A[101010]; int D[101010]; int C[101010]; void solve() { int i,j,k,l,r,x,y; string s; cin>>N; D[0]=1; C[0]=1; for(i=2;i<=N;i++) { cin>>A[i]; D[i]=D[A[i]]+1; C[D[i]]++; } int ret=0; FOR(i,101010) ret+=C[i]%2; cout<<ret<<endl; }
まとめ
Div2Cの方が難しくない?