Cod sursa(job #952365)

Utilizator andrei0610Andrei Constantinescu andrei0610 Data 23 mai 2013 10:22:37
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
//
//  sortaret.cpp
//  Sortare Topologica
//
//  Created by Andrei Constantinescu on 22.05.2013.
//  Copyright (c) 2013 Andrei Constantinescu. All rights reserved.
//

#include<fstream>
#include<vector>

using namespace std;

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

//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]<<" ";
}