Cod sursa(job #952366)

Utilizator andrei0610Andrei Constantinescu andrei0610 Data 23 mai 2013 10:23:54
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
#include<vector>

using namespace std;

int n, m, i, x, y, vizitate[100001], coada[100001], nr[100001], ind;
vector<int> vec[100001];

//parcurgerea df catre nodurile terminale ale grafului
void df(int nod) {
    vizitate[nod] = 1;
    for (int i = 0; i < nr[nod]; i ++)
        if (!vizitate[vec[nod][i]])
            df(vec[nod][i]);
    
    //adaugarea nodului intr-o coada pentru a stabilii sortara topologica
    coada[ind++] = nod;
}

int main() {
    
    ifstream f("sortaret.in");
    ofstream g("sortaret.out");
    
    f>>n>>m;
    
    for (i = 1; i <= m; i++) {
        f>>x>>y;
        nr[x] ++;
        vec[x].push_back(y);
    }
    
    for (i = 1; i <= n; i ++)
        if (!vizitate[i])
            df(i);
    
    for (i = n; i; i --)
        g<<coada[i]<<" ";
}