change to hash

Arrayは要素がnilの場合の処理が必要
add topological sort