Pagini recente » Cod sursa (job #3125199) | Cod sursa (job #2659342) | Cod sursa (job #1553273) | Cod sursa (job #268316) | Cod sursa (job #2360281)
#include <bits/stdc++.h>
#define N 100005
using namespace std;
ifstream fin("ctc.in") ;
ofstream fout("ctc.out") ;
bool viz[N] ;
vector<int> post;
vector<int> graf[N] , graft[N] , sol[N] ;
int ct;
void dfs(int nod)
{
viz[nod] = true ;
for ( auto vec : graf[nod] )
if ( viz[vec] == false )
dfs(vec) ;
post.push_back(nod) ;
}
void dfs2(int nod)
{
cout << " Intru in dfs " << nod << endl ;
viz[nod] = false ;
sol[ct].push_back(nod) ;
for ( auto vec : graft[nod] )
if ( viz[vec] == true )
dfs2(vec) ;
}
int main()
{
int n , m , i , x , y ;
fin >> n >> m ;
for ( i = 1 ; i <= m ; i++ )
{
fin >> x >> y ;
graf[x].push_back(y) ;
graft[y].push_back(x) ;
}
for ( i = 1 ; i <= n ; i++ )
if ( viz[i] == false )
dfs(i) ;
ct=1;
for ( i = n-1 ; i >= 0 ; i-- )
{
if ( viz[post[i]] == true )
{
cout << " apelez de aici " << endl ;
dfs2(post[i]) ;
ct++ ;
}
}
fout << ct-1 << '\n' ;
for ( i = 1 ; i < ct ; i++ )
{
for ( auto vec : sol[i] )
fout << vec << " " ;
fout << '\n' ;
}
}