3. naloga

Rekonstrukcija poti


Direktorije oziroma mape na disku si pogosto predstavljamo kot zložene v drevesasto hierarhično strukturo, na primer takole:

datoteke
Če bi hoteli takšno drevo direktorijev predstaviti samo z besedilom, brez črt, nam lahko prideta na misel naslednja dva načina:


(1) Pri vsakem imenu direktorija lahko zapišemo njegovo globino v drevesu. Pri zgornjem drevesu bi tako dobili: (2) Lahko pa za vsak direktorij izpišemo polno pot od korena do njega. Pri zgornjem drevesu bi tako dobili:
bin 1
inc 1
boost 2
logic 3
math 3
net 2
lib 1
gcc 2
nginx 2
modules 3
/bin
/inc
/inc/boost
/inc/boost/logic
/inc/boost/math
/inc/net
/lib
/lib/gcc
/lib/nginx
/lib/nginx/modules

Napiši program, ki prebere predstavitev drevesa v prvi obliki (torej z imeni direktorijev in njihovimi globinami v drevesu) in ga izpiše v drugi obliki (torej s polnimi potmi). Delovati mora seveda za poljuben vhod, ne le za tistega iz gornjega primera. Če v vhodnem seznamu manjka kakšen direktorij in zato v nekem trenutku poti ni več mogoče rekonstruirati, naj program izpiše „Napaka!“ in se neha izvajati. Podatke lahko bereš s standardnega vhoda in pišeš na standardni izhod ali pa bereš iz datoteke vhod.txt in pišeš na izhod.txt (karkoli ti je lažje). Imena direktorijev so sestavljena le iz črk, brez presledkov ali kakšnih drugih posebnih znakov.


Primer vhoda, kjer rekonstrukcija ni mogoča: Tvoj program bi moral tu izpisati:
abc 1
def 3
/abc
Napaka!