Cod sursa(job #3304907)

Utilizator Tudor_CCTudor Cocu Tudor_CC Data 28 iulie 2025 14:39:21
Problema Componente tare conexe Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>

using namespace std;

int cnt=0;

vector <int> v[100555];

vector <int> vv[100555];

vector <int> st;

int f[100555];

vector <int> r[100555];

void blt(int k)
{
    f[k]=1;
    for(auto a:v[k])
    {
        if(f[a]==0)
        {
            blt(a);
        }
    }
    st.push_back(k);
}

void ctc(int k)
{
    f[k]=0;
    r[cnt].push_back(k);
    for(auto a:vv[k])
    {
        if(f[a]==1)
        {
            ctc(a);
        }
    }
}

int main()
{
    ifstream cin("ctc.in");
    ofstream cout("ctc.out");
    int n,m,x,y;
    cin>>n>>m;
    for(int i=1;i<=m;++i)
    {
        cin>>x>>y;
        v[x].push_back(y);
        vv[y].push_back(x);
    }
    for(int i=1;i<=n;++i)
    {
        if(f[i]==0)
        {
            blt(i);
        }
    }

    for(int i=st.size()-1;i>=0;--i)
    {
        if(f[st[i]]==1)
        {
            ++cnt;
            ctc(st[i]);
        }
    }
    cout<<cnt<<"\n";
    for(int i=1;i<=cnt;++i)
    {
        for(auto a:r[i])
        {
            cout<<a<<" ";
        }
        cout<<"\n";
    }
    return 0;
}