Cod sursa(job #1716469)

Utilizator Antonio9227wdasdas Antonio9227 Data 12 iunie 2016 20:52:19
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <stack>

using namespace std;

bool visited[50001]= {false};
vector<int> noduri[50001];
stack<int> solutie;

void doShit(int startNode)
{
    visited[startNode]=true;
    for(int i=0; i<noduri[startNode].size(); i++)
    {
        int next=noduri[startNode].at(i);
        if(!visited[next])
            doShit(next);
    }
    solutie.push(startNode);
}

int main()
{
    freopen("sortaret.in","r",stdin);
    freopen("sortaret.out","w",stdout);

    int n,m,x,y;/// M linii,
    scanf("%d%d",&n,&m);

    for(int i=0; i<m; i++)
    {
        scanf("%d%d",&x,&y);
        noduri[x].push_back(y);
    }

    for(int i=1; i<=n; i++)
        if(!visited[i])
            doShit(i);

    while(!solutie.empty())
    {
        printf("%d ",solutie.top());
        solutie.pop();
    }
    return 0;
}