From db20df45e1f2d9de61b3b94433c0b0fa3b72aeec Mon Sep 17 00:00:00 2001 From: chaharnishant11 Date: Tue, 14 Apr 2020 03:58:28 +0530 Subject: [PATCH] Strongly Connected Components --- .../SCC_kosaraju.cpp | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 Competitive Coding/Graphs/Strongly Connected Components/SCC_kosaraju.cpp 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<