Fa (Tree)

A jól ismert adatstruktúra, amely lehet üres vagy halmaza egy vagy több pontnak, amelyek élekkel kapcsolódnak egymáshoz, kielégítve az alábbi feltételeket.

ˇ         Pontosan egy - gyökérnek nevezett - pont van, amelybe nem érkezik él.

ˇ         A gyökeret kivéve, minden csúcsba pontosan egy él mutat.

ˇ         A gyökérből minden csúcsba pontosan egy irányított élsorozaton át lehet eljutni.

Például tekintsük az alábbi illusztrációt, amelyen a csúcsokat körök, az éleket pedig nyilak helyettesítik. Az első kettő fa, a harmadik nem az.

Feladat:

Írj programot, amely a csúcsok és a köztük lévő irányított élek ismeretében megadja, hogy a struktúra definíció szerint fa vagy sem.

Bemenet:

A bemeneti állomány N tesztesetet tartalmaz. Az első sorban az N értéke szerepel. Minden teszteset első sorában egy K pozitív egész áll. A következő sorban K darab számpár található, amelyek mindegyike egy-egy irányított élet reprezentál. A számpár első tagja azt a csúcsot adja meg, amelyből az él indul, a másik szám pedig azt, amelybe mutat. A csúcsok száma minden esetben nullánál nagyobb.

Kimenet:

Minden tesztesetre a "k fa" vagy a "k nem fa" üzenetek közül a megfelelőt kell írni a kimeneti állományba, ahol k a teszteset sorszámát jelenti.

Példa:

Input.txt

output

3

5

6 8 5 3 5 2 6 4 5 6 

8

8 1 7 3 6 2 8 9 7 5 7 4 7 8 7 6

6

3 8 6 8 6 4 5 3 5 6 5 2

1 fa

2 fa

3 nem fa

 

 

(ACM ELTE csapatverseny 2000)