Adjacency List Representation with Node Class Code

 Adjacency List Representation with Node Class

Here is the code:

#include<bits/stdc++.h>
using namespace std;

class Node{
 
    public:
    string name;
    list<string>nbrs;
    Node(string name){
        this->name=name;
    }

 

};

class Graph{


    unordered_map<string,Node*>m;
    public:
    Graph(vector<string>cities){
        for(auto city:cities){
            m[city]=new Node(city);
        }
    }
    void addEdge(string x,string y,bool undir=true){
        m[x]->nbrs.push_back(y);
    }

    void print(){
        for(auto city:m){
            auto c=city.first;
            Node * n=city.second;
            cout<<c<<" -> ";
            for(auto nbr:n->nbrs){
                cout<<nbr<<" ";
            }
            cout<<endl;
        }
    }

};


int main(){
    vector<string>v={"Delhi","Mumbai","Patna","Gaya","Raipur"};
    Graph g(v);

    g.addEdge("Delhi","Mumbai");
    g.addEdge("Delhi","Patna");
    g.addEdge("Delhi","Gaya");
    g.addEdge("Delhi","Raipur");
    g.addEdge("Patna","Mumbai");
    g.addEdge("Gaya","Mumbai");
    g.addEdge("Raipur","Mumbai");
    g.print();


    return 0;
}

Output:
Gaya -> Mumbai Raipur -> Mumbai Patna -> Mumbai Delhi -> Mumbai Patna Gaya Raipur Mumbai ->

Post a Comment

0 Comments