===== Úkol 2 ===== Ve 2. úkolu budete muset vytvořit strukturu ''graph'', která reprezentuje orientovaný graf. Graf se skládá z //uzlů//, které jsou navzájem propojeny //hranami//. * Implementujte všechny funkce deklarované v souboru ''graph.hpp''. Do grafu lze přidat uzly dvěma způsoby: * Pomocí ''init_graph(g, n)'', kde ''g'' je graf a ''n'' je počet uzlů * Pomocí ''add_vertex(g)'' Při implementaci funkce ''init_graph'' můžete uvažovat, že bude pro daný graf volána jenom jednou. Nicméně po volání funkce ''init_graph'' může následovat libovolný počet volání ''add_vertex''. Počet vrcholů v grafu lze získat pomocí funkce ''num_vertices(g)''. Vrcholy jsou identifikovány čísly 0, 1, 2, ..., ''num_vertices(g)-1''. Další funkce k implementaci: * ''add_edge(g, from, to)'' přidá orientovanou hranu z vrcholu číslo ''from'' do vrcholu číslo ''to'' * ''connections(g, from)'' vrátí seznam vrcholů, do kterých vede hrana z vrcholu ''from'' * ''reachable_vertices(g, from)'' vrátí seznam vrcholů, které jsou dosažitelné z vrcholu ''from'' * ''clear_graph(g)'' smaže všechny vrcholy a hrany v grafu Stáhněte si {{:courses:a7b36pjc:ukoly:small2.zip|potřebné hlavičkové soubory a testy}}. Pozor, funkce reachable_vertices byla přejmenována a v upload systému bude pod novým názvem až od 17.10. ==== Co odevzdat? ==== Jeden nebo více souborů ''.cpp'', které implementují funkce deklarované v souboru ''graph.hpp'' tak, aby testy procházely a neztrácela se paměť. ===== Rady ===== ==== Užitečné hlavičky ==== Při hledání dosažitelných uzlů se vám pravděpodobně bude hodit fronta ([[http://en.cppreference.com/w/cpp/container/queue|hlavička ]]).