Cod sursa(job #3347666)

Utilizator tudorhTudor Horobeanu tudorh Data 17 martie 2026 18:47:39
Problema Componente tare conexe Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>
#define pb push_back

using namespace std;

ifstream fin("ctc.in");
ofstream fout("ctc.out");

const int nmax=1e5;

vector<int>v[nmax+1],vr[nmax+1];
vector<int>c[nmax+1];

bool vap[nmax+1];

int cnt;

stack<int>s;

void dfs(int nod){
    vap[nod]=1;
    for(int i:v[nod])
        if(!vap[i])
            dfs(i);
    s.push(nod);
}

void dfsr(int nod){
    vap[nod]=0;
    c[cnt].pb(nod);
    for(int i:vr[nod])
        if(vap[i])
            dfsr(i);
}


int main()
{
    int n,m;
    fin>>n>>m;
    while(m--){
        int st,dr;
        fin>>st>>dr;
        v[st].pb(dr);
        vr[dr].pb(st);
    }
    for(int i=1;i<=n;i++)
        if(!vap[i])
            dfs(i);
    while(!s.empty()){
        int t=s.top();
        s.pop();
        if(!vap[t])
            continue;
        cnt++;
        dfsr(t);
    }
    fout<<cnt<<'\n';
    for(int i=1;i<=cnt;i++){
        for(int j:c[i])
            fout<<j<<' ';
        fout<<'\n';
    }
    return 0;
}