Cod sursa(job #2448262)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 16 august 2019 13:51:07
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
using namespace std;

ifstream f("sortaret.in");
ofstream g("sortaret.out");

int v[100001], n, m;

struct nod{
    int vf;
    nod* next;
};

nod * vecini[100001];
nod * lista;

void add(int i, int j) {
    nod *p = new nod;
    p->vf = j;
    p->next = vecini[i];
    vecini[i] = p;
}

void push(int i) {
    nod *p = new nod;
    p->vf = i;
    p->next = lista;
    lista = p;
}

void dfs(int x) {
    v[x] = 1;
    for(nod *p = vecini[x]; p; p = p->next)
        if(!v[p->vf])
            dfs(p->vf);
    push(x);
}

int main () {
    f >> n >> m;
    int x, y;
    for(int i = 1; i <= m; i++) {
        f >> x >> y;
        add(x, y);
    }

    for(int i = 1; i <= n; i++) {
        if(!v[i])
            dfs(i);
    }

    for(nod *p = lista; p; p = p->next)
        g << p->vf << ' ';
}