問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
ディスクに含まれるディレクトリ (フォルダ) と各ファイルの木構造、ファイルのサイズが与えられます。
各ディレクトリについて、そのディレクトリに含まれるファイルのサイズの合計を計算してください。
ただし、ディレクトリ直下のファイルだけでなく、子ディレクトリのファイルなども含め再帰的にすべてのファイルのサイズを合計してください。
また、各ファイルのサイズも、ディレクトリのサイズと同様に出力してください。
n
DATA_1
DATA_2
...
DATA_n
directory_name 0 num child_1 child_2 ... child_num
file_name size 0
合計 n 行出力してください。
i 行目には、i 番目のデータ (ディレクトリまたはファイル) の名前 (directory_name/file_name) と、それに含まれる全データの合計データサイズをこの順に半角スペース区切りで出力してください。
また、末尾に改行を入れ、余計な文字を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・ 入力はすべて整数
・ 1 ≦ n ≦ 100,000 = 10^5
・ directory_name, file_name は、半角英小文字または半角ピリオド .
で構成される長さ 256 以下の文字列
・ DATA_i がファイルの場合、1 ≦ size ≦ 1,000,000,000 = 10^9
・ DATA_i がディレクトリの場合、1 ≦ num ≦ n - i
・ DATA_i がディレクトリの場合、i < child_1 < child_2 < ... < child_num ≦ n
・ 与えられる構造は根付き木をなす
・ 1 つ目のデータはルートディレクトリ (根付き木としてみたときの根) である
・ 空のディレクトリは存在しない
・ 入力の文字数は半角 5,000,000 文字以下
5
usr 0 1 2
local 0 1 3
bin 0 2 4 5
gcc 100 0
clang 200 0
usr 300
local 300
bin 300
gcc 100
clang 200