.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » acolor

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
acolor


Timp maxim de execuţie / test:
0.6s
Memorie totala disponibilă / stivă:
64MB / 5MB

Omida-agent Smith s-a săturat să tot distrugă arborii şi acum îşi dezvoltă simţul artistic – îi place mult mai mult
să-i coloreze.
De fiecare dată când vrea să creeze o nouă arbo-pictură îşi ia cu el cele K creioane colorate, îşi alege un arbore din grădină şi porneşte la lucru.
Arborele ales de Smith este alcătuit din N noduri, are ca rădacină nodul R şi o formă potrivită pentru pictură:
– fiecare nod are cel mult două crengi care duc spre două noduri: unul la stânga şi/sau unul la dreapta;
– între oricare două noduri există un drum unic format din crengi distincte, pe care omida se poate plimba pentru a ajunge de la un nod la celălalt;
– nodurile din subarborele stâng al unui nod sunt toate plasate mai la stânga decât acesta, iar cele din subarborele drept sunt toate mai la dreapta, de aceea nodurile au fost etichetate de la 1 la N de la cel mai din stânga până la cel mai din dreapta.
Omida a observat că picturile sale sunt frumoase doar dacă respectă unele reguli de bază pe care le-a citit într-o carte:
– orice nod trebuie să fie colorat cu exact una dintre cele K colori;
– un nod trebuie să fie colorat diferit faţă de părintele dinspre rădăcină (adică faţă de nodul care precedă nodul respectiv atunci când omida se plimbă pe drumul de la rădăcină la nod);
– privit din exterior arborele trebuie să fie colorat diferit de la stânga la dreapta: orice nod are o culoare diferită de cel mai apropiat nod la stânga de el şi faţă de cel mai apropiat nod la dreapta (cu alte cuvinte culoarea nodului etichetat cu i trebuie să fie diferită de culoarea nodurilor etichetate cu i-1, i+1).

Cerinţă

Scrieţi un program care să determine pentru un arbore dat în câte picturi frumoase (picturi care să respecte criteriile din enunţ) poate fi transformat acesta. Deoarece numărul cerut poate fi foarte mare, este suficient să aflaţi restul împărţirii la 10007.

Date de intrare

Fişierul de intrare acolor.in va conţine pe prima linie numerele întregi N, R, K separate prin câte un spaţiu. Pe următoarele N linii este descrisă structura arborelui. Mai exact, pe linia i+1 vor exista două numere sti, dri separate printr-un spaţiu, reprezentând nodul fiu spre stânga şi respectiv nodul fiu spre dreapta al nodului i. Dacă un nod nu are fiu spre stânga şi/sau fiu spre dreapta atunci numărul corespunzător va fi 0.

Date de ieşire

Fişierul de ieşire acolor.out va conţine o singură linie pe care va fi scris numărul de picturi frumoase care se pot obţine pentru arborele dat.

Restricţii

0 < N ≤ 100 000
1 ≤ R ≤ N
1 ≤ K ≤ 100

Se acordă 40 de puncte pentru teste cu N≤100 şi K≤10.
Se acordă 60 de puncte pentru teste cu N≤400 şi K≤15.

Exemple

acolor.inacolor.outExplicaţii
9 5 4 0 0 1 3 0 4 0 0 2 6 0 7 0 9 0 0 8 0 3601


autor: Emilian Miron
propunător: Prof. Emanuela Cerchez
Liceul de Informatica ″Grigore Moisil″
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la ONI 2006: borg, diamant, matrice1, petrom, ratina, vitale, cifru1, evo, part, trasee, bombo, cub2, prieteni2, sg1, fact, limbaj, panouri, pereti, sant1, zumzi, adun, sport1, baschet1, mere3, roboti, tzigla, morse, powerpuff
De acelaşi autor: trains, pstring, joc4, omizi, arbnr, avere, bcolor, arbfind, albinuta1, drumuri
Despre programare dinamică: vedete, fbr, tgv, zeratul, rv, comun, retea, circuit, sumdif, copaci, drum, text, palind, joc, vikingi, rafturi, balaur, plimbare, party, pc, pioni, seif, iepuri, numere3, perm, ture, bilete, prop, ro, reduceri, cuburi, invest, cutie2, stalpi, nr2, judete, strict, auto2, tree, jobs, leaves, pstring, program, datorii, senzori, farfurii, joc1, barbie, ambigram, rlcs, cub1, bio, chimie1, otilia, pasune, remi, sir23, tren1, joc5, pachete, echipe, comb, agitatie, ivv, peste, pitici, pipe, shgraf, tabara1, stop, randuri, zidar, log, sant, produs, subsir, cover, bcast, emax, dist, mesaj1, imax, avere, asmax, raft, suma2, joc12, fni, nr4, join, transport, masina3, lsort, microvirus, fat, cafea, echipe1, anticip, bsir, diamant, petrom, evantai, spion, evo, bombo, lacusta, lant, team, pitici1, numere8, dep, stiva, subgeom, pviz, tir1, cabane, piramida1, mosia, cuvinte1, gaina, materom, sortari, turnuri, trans, politie, codul, dansatori, nkbiti, kperms, treegame, siruri2, 123, jucarii, bradut, joc15, expozitie, text3, ic, echilibru, distsir, kmax, stalpi1, gaz, triunghi2, v2d, cuiburi, mine, orientare, activ, secvbiti, kcons, pokemon, ubergraf, left, acerc, autostrazi, kdist, select, cazare, fluviu, telecomanda, parcela, pion, subs, suma4, sirmax, bdotcom, viena, sablon2, telecab, ikebana, radare, hacker, obstacole, robotel, centrala, verigi, cds, wg, minusk, radioactiv, enigma, jb, efect, maxviz, ripstick, progresii, maxtri, combcuv, blis, subsiruri, mijloc, probleme, unuzero, palindrom1, minerale, speed, zmax, spider, cntgcd, interclasare, bus, pariuri, riglef, fractii2, fall, arbsum, conuri, arbvalmax, procente, metrou
Despre combinatorică: manevre, carti, bonuri, test, cub, nspecial, circuit, numere, cs, pluricex, parent, gray, siruri, anagrame, party, net, scaune, sir, monede, aztec, nrcuv2, perm, race, hanoig, red, grup, hperm, depou, grazing, pm, reteta2, playlist, young, pizza1, albine, caramele, teatru1, tub, robot1, sir23, soldati1, concurs1, comb, expresii, arbnr, cod1, munte, shgraf, desc, lex, munte1, maxperm, role, avere, vizibil, prime1, hexa, patrat, carti2, puncte2, pact, aranjari, numere5, borg, sg1, perfect, cifru2, bile4, pviz, culmi1, piramida1, trapez, frunze, sir7, logic, coduri, jetoane, kperms, tablite, secvpar, lego, permutari, binperm, multiplu1, operatii, fotbal, kbiti, jucarii, bradut, expozitie, parbit, kmax, petrecere, tango, rege, cd1, cifru3, kcons, bubblesort, hawaii, randomizare, kdist, reuniune, echipa, ghinion, cavaleri, camera616, covor, subm, grupuri, pavari, asfalt, adunscad, rotund, sport2, arbore1, lant1, module, nrperm, oneton, nrpomi, cover1, nrpal, probleme, optim, poly, vot1, sudoku1, flori2, xnumere, showroom, cntgcd, subsets, nkd, nrgraf, spion1, puteri, stiva1, permtr, relatii, 2sah, matcnt, magic7, nmult, roua
Despre arbore binar de căutare: barfa
surse trimise | ajutor