Cod sursa(job #2360281)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 1 martie 2019 17:16:14
Problema Componente tare conexe Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#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' ;
    }
}