Cod sursa(job #776661)

Utilizator SteveStefan Eniceicu Steve Data 10 august 2012 10:39:17
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <list>
#include <vector>

using namespace std;

int N, M, j = -1, luat;
int in[50005];
list <int> out[50005];
int v[50005];
vector <int> setlol;

void Citire () {
    ifstream fin ("sortaret.in");
    fin >> N >> M;
    int a, b;
    for (int i = 0; i < M; i++)
    {
        fin >> a >> b;
        out[a].push_back (b);
        in[b]++;
    }
    fin.close ();
    for (int i = 1; i <= N; i++)
        if (!in[i]) setlol.push_back (i);
}

void Business () {
    int a, b;
    ofstream fout ("sortaret.out");
    while (!setlol.empty ())
    {
        luat = 0;
        a = setlol.back ();
        setlol.pop_back ();
        fout << a << " ";
        while (!out[a].empty ())
        {
            b = out[a].back ();
            in[b]--;
            if (!in[b]) setlol.push_back (b);
            out[a].pop_back ();
        }
    }
    fout.close ();
}

int main () {
    Citire ();
    Business ();
    return 0;
}