AI 1

 avatar
coder
c_cpp
2 years ago
3.1 kB
2
Indexable
#include <iostream>
#include <vector>
#include <queue>

using namespace std;

class Graph
{
public:
    void printGraph(vector<int> graph[], int n)
    {
        for (int i = 1; i <= n; i++)
        {
            cout << i << " -> ";
            for (int j = 0; j < graph[i].size(); j++)
            {
                cout << graph[i][j] << " ";
            }
            cout << "\n";
        }
    }

    void bfs(int V, vector<int> graph[], int start, int visited_bfs[])
    {
        visited_bfs[start] = 1;
        queue<int> q;
        q.push(start);
        while (!q.empty())
        {
            int x = q.front();
            cout << x << " ";
            q.pop();
            for (int i = 0; i < graph[x].size(); i++)
            {
                if (!visited_bfs[graph[x][i]])
                {
                    visited_bfs[graph[x][i]] = 1;
                    q.push(graph[x][i]);
                }
            }
        }
    }

    void dfs(vector<int> graph[], int visited_dfs[], int v)
    {
        visited_dfs[v] = 1;
        cout << v << " ";
        for (auto &i : graph[v])
        {
            if (!visited_dfs[i])
            {
                dfs(graph, visited_dfs, i);
            }
        }
    }
};

int main()
{
    int n;
    cout << "Enter the Number of Vertices: ";
    cin >> n;
    int e;
    cout << "Enter the Number of Edges: ";
    cin >> e;
    vector<int> graph[n + 1];
    for (int i = 0; i < e; i++)
    {
        int u, v;
        cout << "Enter source for Edge " << i + 1 << ": ";
        cin >> u;
        cout << "Enter destination for Edge " << i + 1 << ": ";
        cin >> v;
        graph[u].push_back(v);
        graph[v].push_back(u);
    }
    Graph g;
    int ch;
    bool loop = true;
    while (loop)
    {
        int visited_bfs[n + 1] = {0};
        int visited_dfs[n + 1] = {0};
        cout << "\n";
        cout << "1. Display Graph \n";
        cout << "2. Breadth First Search \n";
        cout << "3. Depth First Search \n";
        cout << "0. Exit \n";
        cout << "\nEnter your Choice: ";
        cin >> ch;
        switch (ch)
        {
        case 1:
            cout << "Adjacency List Representation of the Graph: \n";
            g.printGraph(graph, n);
            break;

        case 2:
            cout << "BFS Traversal of Graph: ";
            for (int i = 1; i < n + 1; i++)
            {
                if (!visited_bfs[i])
                {
                    g.bfs(n + 1, graph, i, visited_bfs);
                }
            }
            break;

        case 3:
            cout << "\nDFS Traversal of Graph: ";
            for (int i = 1; i < n + 1; i++)
            {
                if (!visited_dfs[i])
                {
                    g.dfs(graph, visited_dfs, i);
                }
            }
            break;

        case 0:
            cout << "Thank You!";
            loop = false;
            break;

        default:
            break;
        }
    }
    return 0;
}
Editor is loading...