Cod sursa(job #1377307)

Utilizator T.C.11Tolan Cristian T.C.11 Data 5 martie 2015 21:07:18
Problema Componente tare conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#include <stack>
#include <vector>
#include <algorithm>

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

int n,m,i,j,k,a,b,timp;
int l[100001];
stack<int> s;
vector<int> v[100001],f[100001];

void dfs(int nod)
{
    for (vector<int>::iterator it = v[nod].begin(); it != v[nod].end(); ++it)
    {
        if (l[*it]==0)
        {
            l[*it]=1;
            dfs(*it);
            s.push(*it);
        }
    }
}

void dfs2(int nod)
{
    for (vector<int>::iterator it = f[nod].begin(); it != f[nod].end(); ++it)
    {
        if (l[*it]==1)
        {
            l[*it]=0;
            fout<<*it<<" ";
            dfs2(*it);
        }
    }
}
int main()
{
    fin>>n>>m;
    for (i=1;i<=m;i++)
    {
        fin>>a>>b;
        v[a].push_back(b);
        f[b].push_back(a);
    }
    l[1]=1;
    dfs(1);
    s.push(1);
    while (s.empty() == false)
    {
        if (l[s.top()]==1)
        {
            dfs2(s.top());
            fout<<"\n";
        }
        s.pop();
    }
    return 0;
}