![]() |
|
Teoria dos Grafos
|
[Objetivo] [Códigos] [Receitas de Bolo] [Exercícios]
Apresentar recursos da linguagem C++ e da sua biblioteca padrão (STL) que facilitem o armazenamento, manipulação e consulta de grafos e exercitar a implementação de algoritmos em grafos.
Código 1 - utilização do set
Código 2 - utilização do map para armazenar um grafo direcionado
Código 3 - utilização do map para armazenar um grafo direcionado com pesos
Declaração:
map< int, set<int> > G;
Preenchimento - adicionar arco 5 -> 3:
G[5].insert(3);
Consultar vizinhos do nó 33:
set<int>::iterator sIt;
for ( sIt=G[33].begin() ; sIt!=G[33].end() ; sIt++ )
printf("vertice %d\n", *sIt);
map< int, map<int, set<int>> > G;
1. Escreva um programa que sirva para determinar uma ordem de instalação de pacotes de software que não quebre dependências, ou seja, um software somente deve ser instalado depois que todas as suas dependências estiverem instaladas. O programa deve ler (do teclado ou de um arquivo) os dados no formato exemplificado a seguir, onde cada pacote é unicamente identificado por um número inteiro:
3 2
4 1
...
nesse exemplo, o pacote 3 depende do pacote 2 para ser
instalado e o pacote 4 depende do pacote 1. Como saída o programa
deve imprimir uma ordem válida de instalação para todos os pacotes informados.