Wednesday, 1 April 2026

SDE kosajarus algo ( no of strongly connected components of graph)

 class Solution {

  public:

    void topo_w(int node,vector<vector<int>>&adj,vector<int>&visited,vector<int>&order)

    {

        visited[node]=1;

        for(int x:adj[node]){

            if(!visited[x])topo_w(x,adj,visited,order);

        }

        order.push_back(node);

    }

    void DFS(int node,vector<int>&visited,vector<vector<int>>&adj){

        visited[node]=1;

        for(int x:adj[node])if(!visited[x])DFS(x,visited,adj);

    }

    int kosaraju(int V, vector<vector<int>> &edges) {

        // code here

        vector<vector<int>>adj(V);

        vector<vector<int>>rev_adj(V);

        for(auto e:edges){

            adj[e[0]].push_back(e[1]);

            rev_adj[e[1]].push_back(e[0]);

        }

        vector<int>visited1(V,0);

        vector<int>visited2(V,0);

        vector<int>order;

        for(int i=0;i<V;i++){

            if(!visited1[i])topo_w(i,adj,visited1,order);

        }

        reverse(order.begin(),order.end());

        int ans=0;

        for(int x:order){

        if(!visited2[x])

        {

            DFS(x,visited2,rev_adj);

            ans++;

        }

        }

        return ans;

    }

};

No comments:

Post a Comment

SDE floyd-warshall algorithm

 // User function template for C++ class Solution {   public:     void floydWarshall(vector<vector<int>> &dist) {         //...