Cod sursa(job #199521)

Utilizator romocoderRomo Coder romocoder Data 19 iulie 2008 08:36:50
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
//@RomoCoder
#include <map>
#include <set>
#include <algorithm>
#include <vector>
#include <cstdio>

using namespace std;
vector<int> v;
int GG[50001];

vector<vector<int> > V;
void df(int);

int main() {
    freopen("sortaret.in", "r", stdin);
    freopen("sortaret.out", "w", stdout);
    int N, M;
    scanf("%d %d", &N, &M);
    V.resize(N+3);

    while (M--)
    {
          int a, b;
          scanf("%d %d", &a, &b);
          V[b].push_back(a);
    }
    for (int i = 1; i <= N; ++i) if (!GG[i]) df(i);
    for (int i = 0; i < v.size(); ++i) printf("%d ", v[i]);
    
    return 0;
    }
void df(int nod)
{
     if (GG[nod]) return;
     GG[nod] = 1;
     for (int i = 0; i < V[nod].size(); ++i) df(V[nod][i]);
     v.push_back(nod);
    }
//RomoCoder in Action Again