Cod sursa(job #1108601)

Utilizator lucianRRuscanu Lucian lucianR Data 15 februarie 2014 21:03:29
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <vector>
#define M_MAX 100000
#define N_MAX 50000

using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");

vector <int> v[M_MAX];
int N, M, grad[N_MAX];

void DFS(int node)
{
    if(!grad[node])
    {
       out << node << " ";
       for(int i = 0; i < v[node].size(); i++)
           DFS(v[node][i]);
    }
    else grad[node]--;
}

int main()
{
    in >> N >> M;
    for(int i = 0, a, b; i < M; i++)
    {
        in >> a >> b;
        v[a].push_back(b);
        grad[b]++;
    }
    for(int i = 1; i <= N; i++)
        if(grad[i] == 0)
            DFS(i);
    return 0;
}