kmjp's blog

競技プログラミング参加記です

Codeforces #468 Div1 A. Peculiar apple-tree

問題が読みにくくてなんかしんどかった。
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の方が難しくない?