1236 Network of Schools

Last-modified: 2010-04-03 (土) 01:56:56

原文


時間制限: 1000MS
メモリ制限: 10000K

問題文

あるコンピュータネットワークにはいくつかの学校が接続している。これらの学校の間ではある協定が結ばれている。その協定では、あるソフトウェアを配布するときにある学校から別の学校へそのソフトウェアを送信するということが決まっていて、それぞれの学校はソフトウェアの送信先となる学校のリストを持っている。学校AのリストにBが含まれていても、学校BのリストにAが含まれているわけではないことに注意せよ。
新しいソフトウェアをこのネットワークに流して、すべての学校が新しいソフトウェアを受け取るようにしたい。このとき、最初にいくつの学校にソフトウェアを渡せばよいか、その最小値を求めるプログラムを書け(Subtask A)。
さらに、どの学校に新しいソフトウェアを送ってもすべての学校が新しいソフトウェアを受け取れるように各学校のリストを拡張したい。どの1つの学校に新しいソフトウェアを渡してもすべての学校に新しいソフトウェアが行き渡るようなリストにするために必要な最小の拡張の回数を求めるプログラムを書け(Subtask B)。ただし「拡張」とは、ある1つの学校のリストに別の1つの学校を加えることである。

入力

入力の1行目にはネットワークに接続している学校の数を表す整数 N が書かれている(2 <= N <= 100)。それぞれの学校は 1~N の正整数によって番号づけられている。続くN行は各学校のリストを表す。i+1行目には、学校iからソフトウェアを受け取る学校の番号の一覧が書かれている。それぞれの一覧は整数0で終わる。もしリストにひとつも学校が載っていない場合、その行は0だけからなる。

出力

出力は2行からなる。1行目にはSubtask Aの答を表す正整数を、2行目にはSubtask Bの答をそれぞれ出力せよ。

入力例

5
2 4 3 0
4 5 0
0
0
1 0

出力例

1
2

出典

IOI 1996