Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 11. 05. 2011 19:48

hessyk
Příspěvky: 86
Reputace:   
 

matfyzacka strkanice

ahoj, nevíte někdo jakým algoritmem lze vyřešit tato úloha? Děkuji moc za odpověď.


Matfyzáci jsou podivná stvoření. Jedním z nejpodivnějších fenoménů, který v této komunitě lidí vzniká, je vytváření vzájemných hierarchií. Matfyzáci jsou pyšní na svoji inteligenci a davají to ostatním najevo. Nejvíc se tento problém projevuje tam, kde jsou matfyzáci nuceni tvořit fronty. Matfyzák, který si o jiném matfyzákovi myslí, že je hloupější, odmítá stát ve frontě za ním. Tím vzniká řada nepříjemných strkanic a šarvátek. Situace začíná být neúnosná, takže se přímo sám děkan obrátil na vás, zda byste problém nevyřešili...

Napište program, který dostane seznam matfyzáků a jejich názorů na inteligenci ostatích. Vašim úkolem je matfyzáky uspořádat do posloupnosti tak, aby vždy platilo, že pokud považuje matfyzák A kolegu B za hloupějšího, pak musí být v této posloupnosti stát A před B.

Nedá moc přemýšlení, že požadované uspořádání nemusí existovat. Pokud si např. A myslí, že je chytřejší než B a B si myslí, že je chytřejší než A, tak nelze vytvořit uspořádání, se kterým by byli oba spokojeni. V takovém případě oznamte, že uspořádání nelze vytvořit.

Formát dat:
Na standardním vstupu se na prvním řádku se nachází číslo N (0 ≤ N ≤ 20000) určující počet matfyzáků. Na následujících N jsou údaje o jednotlivých matfyzácích, přičemž    každý matfyzák je na samostatném řádku. Na začátku řádku je nejprve uvedeno číslo k, které pro daného matfyzáka definuje počet jeho kolegů, o kterých si myslí, že jsou hloupější, než on sám. Následuje k čísel, která představují indexy těchto kolegů (matfyzáky číslujeme od 1).

Výsledky vypište na standardní výstup jako permutaci matfyzáků (tzn. posloupnost jejich indexů) oddělovanou mezerami. Pokud není možné matfyzáky uspořádat, vypište pouze řetězec "no".

Pokud existuje správných řešení víc, stačí vypsat libovolné z nich.


Příklad 1:
Vstup:
  5
  1  4
  2  1 4
  1  4
  0
  3  3 1 2
Odpovídající výstup:
  5 3 2 1 4

Příklad 2:
Vstup:
  3
  1  2
  1  3
  1  1
Odpovídající výstup:
  no

Offline

 

#2 12. 05. 2011 07:24 — Editoval musixx (12. 05. 2011 07:30)

musixx
Místo: Brno
Příspěvky: 1771
Reputace:   45 
 

Re: matfyzacka strkanice

Já bych na to šel od lesa: Uspořádání si představit jako matici, zadat tam vstupní údaje, přidat reflexivitu, transitivně uzavřít a ověřit antisymetrii. Pokud to antisymetrické není, tak vypsat "no", jinak vypsat postupně hasseovský diagram od horních pater směrem dolů, pořadí na jednom patře libovolné.

Offline

 

#3 13. 05. 2011 21:57

check_drummer
Příspěvky: 5511
Reputace:   106 
 

Re: matfyzacka strkanice

Nejedná se o problém topologického třídění?
Npůjde dokázat, že pokud neexistuje cyklus v této relaci, pak existuje matfyzák, který si myslí, že je chytřejší než všichni ostatní? Toho dejme na první místo a indukcí postupujme dále.


"Máte úhel beta." "No to nemám."

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson