Задаю данные 
                  
                  
                  1 Количество вершин 2
                  
                  
                  Количество смежных вершин для вершины 1 1
                  
                  
                  Идентификатор соседней вершины 1: 0
                  
                  
                  Количество смежных вершин для вершины 2 2
                  
                  
                  Идентификатор соседней вершины 1: 1
                  
                  
                  Идентификатор соседней вершины 2: 0
                  
                  
                  Граф 
                  
                  
                  1 0
                  
                  
                  2 1 0
                  
                  
                  Поиск в ширину 
                  
                  
                  Посещенная вершина  0
                  
                  
                   Показывает, что посещенная вершина только 0. 
                  
                  
                  А должно быть 0, 1 , 2. Можете подсказать что не так?
                  
                  
                  #include <iostream>
                  
                  
                  #include <vector>
                  
                  
                  #include <queue>
                  
                  
                  
                  
                  
                  using namespace std;
                  
                  
                  
                  
                  
                  struct Vertex {
                  
                  
                      int id; // идентификатор вершины
                  
                  
                      bool visited; // флаг посещения
                  
                  
                      vector<int> adjacentVertices; // список идентификаторов смежных вершин
                  
                  
                  };
                  
                  
                  
                  
                  
                  void bfs(vector<Vertex>& graph, int startVertexId) {
                  
                  
                      queue<int> vertexQueue; // очередь для посещения вершин
                  
                  
                      vertexQueue.push(startVertexId); // добавляем стартовую вершину в очередь
                  
                  
                      graph[startVertexId].visited = true; // помечаем стартовую вершину, как посещенную
                  
                  
                  
                  
                  
                      while (!vertexQueue.empty()) { // пока очередь не пуста
                  
                  
                          int vertexId = vertexQueue.front(); // берем вершину из очереди
                  
                  
                          vertexQueue.pop(); // удаляем вершину из очереди
                  
                  
                          cout << "Посещенная вершина: " << vertexId << endl; // выводим идентификатор посещенной вершины
                  
                  
                  
                  
                  
                          for (int adjacentVertexId : graph[vertexId].adjacentVertices) { // перебираем смежные вершины
                  
                  
                              if (!graph[adjacentVertexId].visited) { // если смежная вершина не была посещена
                  
                  
                                  vertexQueue.push(adjacentVertexId); // добавляем смежную вершину в очередь
                  
                  
                                  graph[adjacentVertexId].visited = true; // помечаем смежную вершину, как посещенную
                  
                  
                              }
                  
                  
                          }
                  
                  
                      }
                  
                  
                  }
                  
                  
                  
                  
                  
                  int main() {
                  
                  
                      // создаем граф
                  
                  
                    setlocale(0,"Russian");
                  
                  
                      int numVertices;
                  
                  
                      cout << "Введите количество вершин: ";
                  
                  
                      cin >> numVertices;
                  
                  
                      
                  
                  
                      vector<Vertex> graph(numVertices);
                  
                  
                  
                  
                  
                      for(int i=0; i<numVertices; i++) {
                  
                  
                          graph[i].id = i+1;
                  
                  
                          graph[i].visited = false;
                  
                  
                          int numAdjacent;
                  
                  
                          cout << "Введите количество смежных вершин для вершины " << i+1 << ": ";
                  
                  
                          cin >> numAdjacent;
                  
                  
                          
                  
                  
                          for(int j=0; j<numAdjacent; j++) {
                  
                  
                              int adjacentVertexId;
                  
                  
                              cout << "Введите идентификатор соседней вершины " << j+1 << ": ";
                  
                  
                              cin >> adjacentVertexId;
                  
                  
                              graph[i].adjacentVertices.push_back(adjacentVertexId);
                  
                  
                          }
                  
                  
                      }
                  
                  
                      
                  
                  
                      // Вывод графа
                  
                  
                      cout << "Граф:" << endl;
                  
                  
                      for (Vertex vertex : graph) { // перебираем все вершины графа
                  
                  
                          cout << "Вершина " << vertex.id << " -> "; // выводим идентификатор текущей вершины в консоль
                  
                  
                          for (int adjacentVertexId : vertex.adjacentVertices) { // перебираем идентификаторы смежных вершин текущей вершины
                  
                  
                              cout << adjacentVertexId << " "; // выводим идентификаторы смежных вершин текущей вершины в консоль
                  
                  
                          }
                  
                  
                          cout << endl; // переходим на следующую строку
                  
                  
                      }
                  
                  
                  
                  
                  
                      cout << endl << "Поиск в ширину:" << endl;
                  
                  
                      bfs(graph, 0); // запускаем поиск в ширину, начиная с вершины с идентификатором 0
                  
                  
                  
                  
                  
                      cin.get();
                  
                  
                      return 0;
                  
                  
                  }
                  
                  
                
Первое, что не так, это нечитаемая простыня. Код надо размещать на пастебин или годболте. Сюда давать ссылку.
Обсуждают сегодня