Напомена: ово је незванична копија задатака. Као таква, не гарантује се да ће овај сајт бити одржаван, и немојте се изненадити ако са њега задаци одједном нестану.

Дрва су јако интересантна жива врста. Упркос томе шта су вам причали на часовима биологије, она заправо су само колекције \(N\) тачака и \(N-1\) дужи између парова њих, тако да крећући се само по паровима тачака спојених дужима је могуће стићи од сваке тачке до сваке друге.

Оно што вас исто нису научили на часовима биологије је да дрва имају јако развијен смисао за моду. Стабла се облаче тако што свакој њиховој тачки припише један позитиван цео број број (њихов еквивалент боја). Кроз историју различита бојења су била популарна почевши од традиционалних монохроматских до данашњих “ретро” црно-белих (оно што ми читамо као \(1\)-\(2\)).

Међутим, наш херој, Мирко, је једно јако креативно и неконвенцијално дрво. Стога, он жели да започне нови тренд у свету дрвене моде и да свакој тачки додели неки број, тако да ако је некој тачки доделио број \(x\), онда је та тачка дужима повезана са тачно \(x\) тачака којима није доделио \(x\) (и могуће још некима којима јесте доделио \(x\)). Мирко је сасвим сигуран да ће променити свет дрвене моде заувек, ако успе да дизајнира своје одело. Да би то урадио потребна му је ваша помоћ.

Описи функција

Потребно је да имплементирате функцију

где је \(N\) број који представља број тачака који има Мирко, низови \(U\) и \(V\), дужине \(N-1\) представљају да постоји дуж између тачака \(U[i]\) и \(V[i]\). У низ \(C\) дужине \(N\) треба да упишете вредности бројева које Мирко треба да додели тачкама, или да цео низ буде једнак \(-1\) уколико то није могуће. Сви низови су индексирани од 1. ## Пример

Нека је \(N=4\), и нека су низови \(U=\{1,1,1\}\) и \(V=\{2,3,4\}\): Тада је могуће изабрати \(C=\{3,1,1,1\}\), јер је тада тачка \(1\) боје \(3\) спојена са три тачке боје \(1\), што оправдава његову боју, док су сви остали боје \(1\) и спојени су само са једном тачком, која је при томе различите боје.

Нека је \(N=4\), и нека су низови \(U=\{1,2,3\}\) и \(V=\{2,3,4\}\): Тада решење не постоји и треба изабрати \(C=\{-1,-1,-1,-1\}\).

Ограничења

Потребно је да пошаљете тачно један фајл sasavo_odelo.cpp који имплементира поменуту функцију. Осим тражене функције, ваш фајл може садржати и додатне глобалне променљиве, помоћне функције и додатне библиотеке.

Ваша функција мора бити следећег облика:

void Oboji(int N, int* U, int* V, int* C);

Вашим програмима је дозвољено да мењају садржај низова али не смеју да приступају ван граница датих низова.

Уз задатак, обезбеђен вам је “template” фајл code.cpp које можете користити и мењати по потреби. Такође вам је обезбеђен програм grader.cpp који служи да лакше тестирате кодове. Овај програм учитава са стандардног улаза следеће податке:

Затим овај програм зове вашу функцију и штампа \(N\) бројева које представљају бојење које врати функција.