Graph Bfs Dfs SSSP Dijkstra Creation
Graph Bfs Dfs SSSP Dijkstra Creation
h"
#include<iostream>
#include<map>
#include<list>
#include<queue>
#include<set>
using namespace std;
template<typename T>
class graph {
public:
map<T, list<pair<T,int> > > adjlist;
adjlist[u].push_back(make_pair(v, dist));
if (bidirec)
adjlist[v].push_back(make_pair(u, dist));
}
void print_adj()
{
for (auto n : adjlist)
{
cout << n.first<<" : ";
for (auto a : n.second )
{
cout <<"( "<<a.first<<" , "<<a.second<<" ) " ;
}
cout << endl;
}
}
void bfs(T u)
{
map< T, bool> visited;
queue<T> q;
q.push(u);
while (!q.empty())
{
T front_element = q.front();
q.pop();
if (!visited[front_element]) {
cout << front_element << " -> ";
visited[front_element] = true;
}
for (auto a : (adjlist[front_element]))
{
if(!visited[a.first])
q.push(a.first);
}
}
}
}
};
int main()
{
graph<char> g;
g.addEdge('0', '1',4, 0);
g.addEdge('0', '7',8, 0);
g.addEdge('1', '7',11, 0);
g.addEdge('1', '2',8, 0);
g.addEdge('7', '8',7, 0);
g.addEdge('2', '8',2, 0);
g.addEdge('8', '6',6, 0);
g.addEdge('2', '5',4, 0);
g.addEdge('6', '5',2, 0);
g.addEdge('2', '3',7, 0);
g.addEdge('3', '3',14, 0);
g.addEdge('3', '4',9, 0);
g.addEdge('5', '4',10, 0);
g.addEdge('7', '6',1, 0);
g.print_adj();
return 0;
}