Doplňující domácí úloha z ADS I

Pokud se vám nepodařilo nasbírat dostatečné množství bodů za normální domácí úkoly (které můžete stále ještě řešit za poloviční počet bodů, s výjimkou úlohy Path pro ty, co byli na cvičení, kde se předvádělo jeho řešení), můžete získat body za následující praktické úkoly. U těchto úkolů platí ještě více než u ostatních, že nezaručuju včasné opravení – posílat je v posledních 2 týdnech září je skutečně velmi riskantní počin který nikomu nedoporučuju.

Kompletní domácí úkol obsahuje 4 složky:

  1. Kód vašeho programu.
  2. Zkompilovaný program (tento bod vynechejte pouze v případě, že úkol píšete v Pythonu nebo jiném interpretovaném jazyce).
  3. Návod, jak váš program zkompilovat, pokud se jedná o kompilovaný jazyk (pokud víte, co je to makefile, odevzdejte ten), nebo spustit, pokud o interpretovaný.
  4. Sadu vstupů. U topologického třídění by alespoň jeden z dodaných vstupů měl mít řádově sto tisíc vrcholů a řádově vyšší miliony hran.

Dokumentaci po vás nechci, neb uživatelská dokumentace by měl být přepis tohoto zadání, a programátorská dokumentace by měly být vaše zápisky z přednášky a zbytek by měl být vidět z vhodně okomentovanáho kódu.

Povolené jazyky jsou Pascal, C, C#, Java, Python a po konzultaci případně další. Z vašeho vybraného jazyka však nesmíte použít žádnou datovou strukturu, kterou nabízí více či méně standardní knihovny, která je složitější, než běžné nenafukovací pole (teda krom pythonu, ale v něm zkuste nafukovacích vlastností listu, který zastupuje pro běžné účely plo, příliš nevyužívat). Jediná výjimka je čtení a parsování vstupu, tam si používejte co chcete.