1日目 問題3(ネットワーク)

 あるコンピュータネットワークにはたくさんの学校が接続している。 このネットワーク上の学校の間には協定(agreement)が結ばれており、 新しいソフトウェアを受け取ったらそれをネットワーク上のいくつかの学校 (「受け手校」(receiving schools)と呼ぶ)に送ることになっており、 そのリスト(受け手校リストと呼ぶ)を持っている。

 新しいソフトウェアのコピーがこの協定に従ってネットワーク上のすべての 学校に届くようにしたい。そのソフトウェアを先ず最初に受け取る学校を 最低何校にすれば可能となるか、その最小数を求めるプログラムを書け (Subtask A)。
 次に、このネットワーク上のどの1校に新しいソフトウェアのコピーを 送っても、ネットワーク上のすべての学校にこのソフトウェアが届くように したい。そのために、いくつかの受け手校リストに新しいメンバーをいくつか 追加してリストを拡張(extension)する。最低何回、受け手校リストを拡張すれば 可能となるか、その最小数を求めよ(Subtask B)。 ただし、受け手校リストを1回拡張するとは、ある受け手校リストに新しい 受け手校を1つだけ追加することをいう。

入力データ

 入力ファイル INPUT.TXT の1行目には整数 N が書いてある。N は ネットワーク上の学校数である(2≦n≦100)。これらの学校は整数 1〜N で表わされている。2行目からの N 行のそれぞれは受け手校のリストを 表わす。第 i+1 行は学校 i の受け手校のリストである。各リストは 0 で 終わっている。0 だけからなる行は受け手校のリストが空であることを 意味する。

出力データ

 ファイル OUTPUT.TXT に2行だけ出力せよ。1行目には Subtask A の答である 正整数を出力し、2行目には Subtask B の答を出力せよ。

入出力例

 図1は入力ファイルの例とそれに対する出力ファイルである。

    INPUT.TXT        OUTPUT.TXT
    ---------        ----------
    5            1 
    2 4 3 0         2 
    4 5 0  
    0      
    0      
        1 0    

図1