let's start Code

স্ট্রংলি কানেক্টেড কম্পোনেন্ট

                               Resource:

গ্রাফ থিওরিতে হাতেখড়ি ১৪ – স্ট্রংলি কানেক্টেড কম্পোনেন্ট

Finding strongly connected components Building condensation graph


#include<bits/stdc++.h>
using namespace std;
const int maxn = 10005;
vector<int> g[maxn], gr[maxn];
vector<bool > used;
vector<int> order, component;
void dfs1(int u)
{
used[u] = true;
for(int i = 0; i < g[u].size(); i++){
int v = g[u][i];
if(!used[v])
dfs1(v);
}
order.push_back(u);
}
void dfs2(int u)
{
used[u] = true;
component.push_back(u);
for(int i = 0; i < gr[u].size(); i++){
int v = gr[u][i];
if(!used[v])
dfs2(v);
}
}
int main()
{
// freopen("in.txt", "r", stdin);
ios_base::sync_with_stdio(false);
cin.tie(0);
int n , m;
cin >> n >> m;
for(int i = 0; i < m; i++){
int u,v;
cin >> u >> v;
g[u].push_back(v);
gr[v].push_back(u);
}
used.assign(n+1, false);
for(int i = 1; i <= n; i++){
if(!used[i])
dfs1(i);
}
used.assign(n+1, false);
for(int i = 1; i <= n; i++){
int v = order[n - i];
if(!used[v]){
dfs2(v);
for(int k = 0; k < component.size(); k++) cout << component[k] << " ";
cout << endl;
component.clear();
}
}
return 0;
}
view raw scc.cpp hosted with ❤ by GitHub
Share:

Related Posts:

No comments:

Post a Comment

About

let's start CODE

Popular Posts