atcoder#AGC023F. [AGC023F] 01 on Tree
[AGC023F] 01 on Tree
配点 : 点
問題文
すぬけ君は、 頂点からなる根付き木を持っています。 頂点には から までの番号が振られています。 頂点 はこの木の根です。 頂点 ( ) の親は頂点 ( ) です。 各頂点には、 または が書かれていて、頂点 に書かれている数は です。
すぬけ君は、この木の頂点を横一列に並べたいと考えています。 その際、どの頂点についても、その頂点より右側にその頂点の先祖となる頂点がないようにします。
頂点を並べ終えたあと、頂点に書かれている数を頂点の並び順に沿って並べた数列を とします。 すぬけ君は、 の転倒数 ( ※ ) を最小化したいです。 の転倒数の最小値を求めてください。
注釈
ある長さ の数列 の転倒数とは、整数 ( ) の組であって、 を満たすものの個数を意味します。
制約
- ( )
- ( )
- 入力はすべて整数である。
入力
入力は以下の形式で標準入力から与えられる。
出力
数列 の転倒数の最小値を出力せよ。
6
1 1 2 3 3
0 1 1 0 0 0
4
頂点を の順に並べると、 となり、 転倒数は になります。 これ以上転倒数を小さくすることは出来ないので、 を出力します。
1
0
0
で、転倒数は です。
15
1 2 3 2 5 6 2 2 9 10 1 12 13 12
1 1 1 0 1 1 0 0 1 0 0 1 1 0 0
31