Cod sursa(job #712991)

Utilizator Sm3USmeu Rares Sm3U Data 13 martie 2012 23:25:47
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#include <vector>
#define nMax 50010

using namespace std;

int n;
vector <int> graf[nMax];
int grad[nMax];

void citire()
{
    scanf ("%d", &n);
    int m;
    scanf ("%d", &m);
    while (m --){
        int x;
        int y;
        scanf ("%d %d", &x, &y);
        graf[x].push_back (y);
        grad[y] ++;
    }
}

void rez()
{
    for (int i = 1; i <= n; ++ i){
        if (grad[i] == 0){
            printf ("%d ", i);
        }
    }
    for (int i = 1; i <= n; ++ i){
        for (unsigned int j = 0; j < graf[i].size(); ++ j){
            grad[graf[i][j]] --;
            if (grad[graf[i][j]] == 0){
                printf ("%d ", graf[i][j]);
            }
        }
    }
    printf ("\n");
}

int main()
{
    freopen ("sortaret.in", "r", stdin);
    freopen ("sortaret.out", "w", stdout);

    citire();
    rez();

    return 0;
}