/**Author : Vivek Bhardwaj * Contributed to : https://github.com/AllAlgorithms/cpp **/ #include using namespace std; class graph{ private : vector> adj; vector> weight_matrix; vector visited; vector distance; vector> edge_list; long long ** weight; const long long INF=1e18; void visited_util(){ fill(visited.begin(),visited.end(),false); } void dfs_util(int start){ visited[start]=true; //do something ...... cout< q; q.push(start); visited[start]=true; //do something ...... //cout<vertices=vertex; } void add_directed_edge(int from,int to){ adj[from].push_back(to); edge_list.emplace_back(from,to); } void add_directed_edge(int from,int to,int weigh){ adj[from].push_back(to); weight[from][to]=weigh; edge_list.emplace_back(from,to); } void add_undirected_edge(int x,int y,int weigh=1){ adj[x].push_back(y); adj[y].push_back(x); edge_list.emplace_back(x,y); edge_list.emplace_back(y,x); weight[x][y]=weigh; weight[y][x]=weigh; } void bfs(int start){ visited_util(); bfs_util(start); } void dfs(int start){ visited_util(); dfs_util(start); } void dijkstra(int start){ visited_util(); fill(distance.begin(),distance.end(),INF); distance[start]=0; dijkstra_util(start); } void bellman_ford(int start){ visited_util(); fill(distance.begin(),distance.end(),INF); distance[start]=0; bellman_ford_util(start); } void floyd_warshell(){ for(int i=0;i