Considere o seguinte código em C++, que usa a biblioteca Boo...

Próximas questões
Com base no mesmo assunto
Q2427370 Programação

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?

Alternativas

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