Cod sursa(job #1108141)

Utilizator ionutzzu12ioan maracineanu ionutzzu12 Data 15 februarie 2014 13:58:03
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

ifstream in ("sortaret.in");
ofstream out ("sortaret.out");
vector <int> G[50010]; int v[50010],viz[50010],n,m,k=1;


void citire()
{
    int i, a, b;
    in>>n>>m;
    for (i=1;i<=m;i++) { in>>a>>b; G[a].push_back(b); }

}

void afisare()
{
    int i; for (i=n;i;i--) out<<v[i]<<" ";
}


void dfs (int x)
{
    viz[x]=1;
    for (int i=0;i<G[x].size();i++) if (!viz[G[x][i]]) dfs (G[x][i]);
    v[k]=x; k++;
}
void solve()
{
     int i;
     for ( i = 1; i <= n; ++i )
         if (! viz[i] )
            dfs( i );
}
int main()
{
    citire();
    solve();
    afisare();
    return 0;
}