Cod sursa(job #3348981)

Utilizator tudorhTudor Horobeanu tudorh Data 24 martie 2026 21:50:28
Problema Componente tare conexe Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <bits/stdc++.h>
#define pii pair<int,int>
#define pb push_back
#define ll long long


using namespace std;

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

const int nmax=1e5;

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

int cnt;

bool vap[nmax+1];
void dfs(int nod){
    vap[nod]=1;
    for(int i:v[nod])
        if(!vap[i])
            dfs(i);
    stk.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(!stk.empty()){
        int t=stk.top();
        stk.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;
}