diff --git a/Competitive Coding/Graphs/Strongly Connected Components/SCC_kosaraju.cpp b/Competitive Coding/Graphs/Strongly Connected Components/SCC_kosaraju.cpp new file mode 100644 index 000000000..2dd1344c9 --- /dev/null +++ b/Competitive Coding/Graphs/Strongly Connected Components/SCC_kosaraju.cpp @@ -0,0 +1,83 @@ +// { Driver Code Starts +#include +using namespace std; +// } Driver Code Ends + +/* Function to find the number of strongly connected components +* using Kosaraju's algorithm +* V: number of vertices +* adj[]: array of vectors to represent graph +*/ +void dfs1(vector adj[],stack& st,int s,bool* vis){ + vis[s]=true; + for(auto j:adj[s]){ + if(!vis[j]){ + dfs1(adj,st,j,vis); + } + } + st.push(s); +} +void dfs2(vector adj[],int s,bool* vis){ + vis[s]=true; + for(auto j:adj[s]){ + if(!vis[j]){ + dfs2(adj,j,vis); + } + } +} + +int kosaraju(int V, vector adj[]){ + // Your code here + bool vis[V]; + for(int i=0;i st; + for(int i=0;i newg[V]; + for(int i=0;i v; + newg[i]=v; + } + for(int i=0;i>t; + while(t--) + { + int a,b ; + cin>>a>>b; + int m,n; + vector adj[a+1]; + for(int i=0;i>m>>n; + adj[m].push_back(n); + } + // exit(0); + cout<