Создание графа с использованием очереди на C++: реализация и пример

Чтобы создать граф с использованием очереди в C++, вы можете использовать представление списка смежности. Вот пример реализации:

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
// Function to add an edge to the graph
void addEdge(vector<int> adj[], int src, int dest) {
    adj[src].push_back(dest);
    adj[dest].push_back(src);
}
// Function to print the graph
void printGraph(vector<int> adj[], int V) {
    for (int v = 0; v < V; ++v) {
        cout << "Adjacency list of vertex " << v << endl;
        cout << "head ";
        for (auto x : adj[v])
            cout << "-> " << x;
        cout << endl;
    }
}
// Function to create a graph using a queue
vector<int> createGraphUsingQueue() {
    int V, E;
    cout << "Enter the number of vertices: ";
    cin >> V;
    cout << "Enter the number of edges: ";
    cin >> E;
    vector<int> adj[V];
    cout << "Enter the edges (source and destination):" << endl;
    for (int i = 0; i < E; ++i) {
        int src, dest;
        cin >> src >> dest;
        addEdge(adj, src, dest);
    }
    return adj;
}
int main() {
    vector<int> adj[] = createGraphUsingQueue();
    int V = sizeof(adj) / sizeof(adj[0]);
    printGraph(adj, V);
    return 0;
}

В этом примере addEdge()— это функция, добавляющая ребро между двумя вершинами графа. printGraph()— это функция для печати представления графа в виде списка смежности. Функция createGraphUsingQueue()предлагает пользователю ввести количество вершин и ребер, а затем принимает входные данные для каждого ребра, создавая граф с использованием реализации на основе очередей.