Cod sursa(job #1082137)

Utilizator TwistedFaithStanescu Jean Alexandru TwistedFaith Data 14 ianuarie 2014 10:57:06
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>

using namespace std;

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

unsigned short int N; int M; bool Verif[50001];
vector <unsigned short int> Tab[50001], Sol;

void Citire()
{
    unsigned short int x,y;

    fin>>N>>M;
    while(fin>>x>>y) Tab[x].push_back(y);
}

inline unsigned short int DFS(unsigned short int Nod)
{
    vector<unsigned short int>::iterator it;
    Verif[Nod]=1;

    for (it=Tab[Nod].begin(); it!=Tab[Nod].end(); it++)
        if(!Verif[*it])
            DFS(*it);

    Sol.push_back(Nod);
}

void S_Topologica()
{
    for(unsigned short int i=1; i<=N; ++i)
        if(!Verif[i])
            DFS(i);
}

void Afisare()
{
    while(Sol.size())
    {
        fout<<Sol.back()<<' ';
        Sol.pop_back();
    }
}

int main()
{
    Citire();
    S_Topologica();
    Afisare();
}