Cod sursa(job #1996532)

Utilizator horiacoolNedelcu Horia Alexandru horiacool Data 1 iulie 2017 19:05:41
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");

vector <int> v[50003];
list <int> sol;
int N,M,x,y;
bool viz[50003];

void DF(int xp)
{
    viz[xp] = true;
    for( vector<int>::iterator it = v[xp].begin() ; it != v[xp].end() ; it++)
        if( viz[*it] == false )
            DF(*it);
    sol.push_front(xp);
}

void SortareTopologica()
{
    for(int i = 1 ; i <= N ; i++)
        if( viz[i] == false )
            DF(i);
}

int main()
{
    f>>N>>M;
    for(int i = 1 ; i <= M ; i++)
    {
        f>>x>>y;
        v[x].push_back(y);
    }
    SortareTopologica();
    for( list<int>::iterator it = sol.begin() ; it != sol.end() ; it++)
         g<<*it<<' ';
    return 0;
}