Cod sursa(job #1804047)

Utilizator AlexandruX1Ureche Florin Alexandru AlexandruX1 Data 12 noiembrie 2016 10:25:39
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <stack>
#include <vector>

using namespace std;

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

typedef vector<int> vi;

stack<int> a;
vector<vi> g;
vector<bool> v(0);

int n, m;

void dfs(int i);

int main()
{
    fin >> n >> m;
    g.resize(n + 1);
    v.resize(n + 1);

    int x, y;
    for (int i = 1; i <= m; ++ i)
    {
        fin >> x >> y;
        g[x].push_back(y);
    }

    for (int i = 1; i <= n; ++ i)
        if (v[i] == 0) dfs(i);

    while(!a.empty())
    {
        fout << a.top() <<' ';
        a.pop();
    }

    return 0;
}

void dfs(int i)
{
    v[i] = 1;
    for (vector<int> :: iterator it = g[i].begin(); it != g[i].end(); ++ it)
    if (v[*it] == 0)
    {
        dfs(*it);
    }
    a.push(i);
}