Cod sursa(job #2427858)

Utilizator reloadeddRosca Ionut reloadedd Data 2 iunie 2019 15:28:35
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#define NMAX 100001

using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

struct Nod {
    int info;
    Nod *urm;
};

Nod *Lista[NMAX], *p;
int grad_interior[NMAX], N, M;

void citire() {
    int i, j;

    fin >> N >> M;

    while (M) {
        fin >> i >> j;
        p = new Nod;
        p->info = j;
        p->urm = Lista[i];
        Lista[i] = p;
        grad_interior[j]++;

        M--;
    }
}

int main() {
    citire();
    bool vizitat[NMAX] = {false}, toate_eliminate = false;

    do {
        toate_eliminate = true;
        for (int i = 1; i <= N; ++i) 
            if (grad_interior[i] == 0 && !vizitat[i]) {
                fout << i << ' ';
                p = Lista[i];
                while (p) {
                    grad_interior[p->info]--;
                    p = p->urm;
                }
                vizitat[i] = true;
                toate_eliminate = false;
            }
    }while(!toate_eliminate);
}