Cod sursa(job #1438052)

Utilizator alinmocanu95FMI Alin Mocanu alinmocanu95 Data 18 mai 2015 23:12:49
Problema Componente tare conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include<iostream>
#include<fstream>
#include<vector>
#define nmax 200001

using namespace std;
vector <int> v[nmax];
vector <int> t[nmax];
vector <int> solutie[nmax];
int n,m,index[nmax],ordine[nmax],k=0,o=0;

ifstream f("ctc.in");
ofstream g("ctc.out");

void dfs(int nod)
{
    index[nod]=1;
    for(int j=0;j<v[nod].size();j++)
        if(index[v[nod][j]]==0)
            dfs(v[nod][j]);
    solutie[o].push_back(nod);
}
void dfst(int nod)
{
    index[nod]=1;
    for(int j=0;j<t[nod].size();j++)
        if(index[t[nod][j]]==0)
            dfst(t[nod][j]);
    k++;ordine[k]=nod;
}
int main()
{
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        f>>x>>y;
        v[x].push_back(y);
        t[y].push_back(x);
    }

    for(int i=1;i<=n;i++)
        if(index[i]==0)
            dfst(i);

    for(int i=1;i<=n;i++) index[i]=0;

    for(int i=n;i>=1;i--)
        if(index[i]==0)
        {
            o++;
            dfs(ordine[i]);

        }

    g<<o;
    for(int i=o;i>=1;i--)
        {
            g<<"\n";
            for(int j=0;j<solutie[i].size();j++)
            g<<solutie[i][j]<<" ";
        }

    return 0;
}