Cod sursa(job #1437920)

Utilizator alinmocanu95FMI Alin Mocanu alinmocanu95 Data 18 mai 2015 20:08:06
Problema Componente tare conexe Scor 4
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<iostream>
#include<fstream>
#include<vector>
#define nmax 200000

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

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

void dfs(int nod)
{
    index[nod]=1;
    g<<nod<<" ";
    for(int j=0;j<v[nod].size();j++)
        if(index[v[nod][j]]==0)
            dfs(v[nod][j]);

}
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++) index[i]=0;

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


    for(int i=1;i<=n;i++) index[i]=0;
    g<<nr<<"\n";
    for(int i=n;i>=1;i--)
        if(index[i]==0)
        {
            dfs(ordine[i]);
            g<<"\n";
        }

    return 0;
}