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.
graph.hpp.
Do grafu lze přidat uzly dvěma způsoby:
init_graph(g, n), kde g je graf a n je počet uzlů
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 potřebné hlavičkové soubory a testy.
Jeden nebo více souborů .cpp, které implementují funkce deklarované v souboru graph.hpp tak, aby testy procházely a neztrácela se paměť.
Při hledání dosažitelných uzlů se vám pravděpodobně bude hodit fronta (hlavička <queue>).