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 ->
0 Comments
If you have any doubts/suggestion/any query or want to improve this article, you can comment down below and let me know. Will reply to you soon.