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)