diff --git a/Graph bfs dfs topological_sort.cpp b/Graph bfs dfs topological_sort.cpp new file mode 100644 index 0000000..d16328e --- /dev/null +++ b/Graph bfs dfs topological_sort.cpp @@ -0,0 +1,126 @@ +#include +using namespace std; + +void addEdge(vector adj[], int u, int v) +{ + adj[u].push_back(v); + +} + +void printGraph(vector adj[], int V) +{ + cout<<"normal graph"< adj[], int V) +{ + queue q; + bool visited[V]={false}; + q.push(0); + cout<<"bfs"<<" "; + cout<<0<<" "; + visited[0]=true; + while(!q.empty()) + { + int s=q.front(); + q.pop(); + for(auto x:adj[s]) + { + if(!visited[x]) + { + cout< adj[], int e, vector &visited) +{ + cout< adj[], vector &visited, stack &s, int e) +{ + visited[e]=true; + vector::iterator itr; + + for(itr=adj[e].begin();itr!=adj[e].end();itr++) + { + if(!visited[*itr]) solve(adj,visited,s,*itr); + } + s.push(e); + return; +} + +vector topoSort(int V, vector adj[]) { + vector visited; + stack s; + vector v; + for(int i=0;i adj[V]; + addEdge(adj, 5, 0); + addEdge(adj, 5, 2); + addEdge(adj, 2, 3); + addEdge(adj, 4, 0); + addEdge(adj, 4, 1); + addEdge(adj, 1, 3); + + printGraph(adj, V); + bfs(adj,V); + cout<<"dfs"<<" "; + vector visited; + for(int i=0;i v=topoSort(V,adj); + for(int i=0;i