Considere o seguinte código em C++, que usa a biblioteca Boo...
Considere o seguinte código em C++, que usa a biblioteca Boost para criar um grafo direcionado com 4 vértices e 4 arestas:
#include <iostream>
#include <boost/graph/adjacency_list.hpp>
int main(){
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS> Graph;
Graph g(4);
boost::add _edge(0, 1, g);
boost::add_edge(1,2,g);
boost::add_edge(2,3,9);
boost::add_edge(3,0,g);
std:cout << "Vértices: "<< boost.:num_vertices(g) << std::endl;
std cout << "Arestas: " << boost::num_edges(g) << std::endl;
return 0;
}
Qual é a saída esperada para esse programa?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: D - Vértices: 4, Arestas: 4.
Explicação:
Vamos analisar o código C++ apresentado na questão, que utiliza a biblioteca Boost para manipulação de grafos.
Primeiramente, é importante entender alguns conceitos e partes do código:
- Biblioteca Boost: É uma coleção de bibliotecas C++ que ajudam em diversas tarefas, incluindo a manipulação de grafos.
- Graph: É um tipo definido usando
boost::adjacency_list
, que permite a criação de grafos direcionados.
Agora, vamos examinar o código passo a passo:
#include <iostream> #include <boost/graph/adjacency_list.hpp> int main(){ typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS> Graph; Graph g(4); boost::add_edge(0, 1, g); boost::add_edge(1, 2, g); boost::add_edge(2, 3, g); boost::add_edge(3, 0, g); std::cout << "Vértices: " << boost::num_vertices(g) << std::endl; std::cout << "Arestas: " << boost::num_edges(g) << std::endl; return 0; }
Análise do código:
1. O grafo é definido com 4 vértices (Graph g(4);
).
2. Em seguida, são adicionadas 4 arestas:
- Aresta de 0 para 1 (
boost::add_edge(0, 1, g);
). - Aresta de 1 para 2 (
boost::add_edge(1, 2, g);
). - Aresta de 2 para 3 (
boost::add_edge(2, 3, g);
). - Aresta de 3 para 0 (
boost::add_edge(3, 0, g);
).
3. O código então imprime o número de vértices e arestas do grafo:
boost::num_vertices(g)
retorna 4.boost::num_edges(g)
retorna 4.
Justificativa das alternativas:
D - Vértices: 4, Arestas: 4.
Esta é a alternativa correta, pois o grafo possui 4 vértices e 4 arestas, conforme descrito e analisado acima.
A - Vértices: 3, Arestas: 3.
Incorreta, pois o número de vértices é 4, não 3, e o número de arestas também é 4.
B - Vértices: 3, Arestas: 4.
Incorreta, pois o número de vértices é 4, não 3.
C - Vértices: 4, Arestas: 3.
Incorreta, pois o número de arestas é 4, não 3.
E - Vértices: 5, Arestas: 5.
Incorreta, pois o número de vértices é 4, não 5, e o número de arestas é 4, não 5.
Espero que esta explicação tenha ajudado. Se você tiver qualquer dúvida adicional, estarei à disposição para ajudar!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Peguei a resposta no enunciado
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo