Cod sursa(job #954387)

Utilizator cousin.batmanVaru Batman cousin.batman Data 29 mai 2013 00:27:07
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstring>
#include <fstream>
#include <list>

using namespace std;

void visit(int node, list<int> *edges, int *visited, list<int> *result){
    int x;
    visited[node] =1;
    for(int x: edges[node])
        if(!visited[x])
            visit(x, edges, visited, result);

    result->push_back(node+1);
}

int main(){
    int n, m, i, x, y;

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

    in>>n>>m;
    list<int> edges[n], result;

    int visited[n];
    memset(visited, 0, n*sizeof(int));

    for(i=0; i<m ;i++){
        in>>x>>y;
        edges[x-1].push_back(y-1);
    }
    
    for(i=0; i<n; i++)
        if(!visited[i])
            visit(i, edges, visited, &result);

    result.reverse();
    for(int i: result){
        out<<i<<" ";
    }


    in.close();
    out.close();
    return 0;
}