Cod sursa(job #2943070)

Utilizator cyg_mihaizMIHAI ZARAFIU cyg_mihaiz Data 20 noiembrie 2022 15:55:37
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <bitset>
#include <vector>
#include <stack>

using std::stack;
using std::vector;
using std::bitset;
using std::ios_base;

const int NMAX = 50000;

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

vector<vector<int> > adj(1 + NMAX);

bitset<1 + NMAX> vis;

stack<int> st;

void dfs(int node)
{
    vis[node] = 1;

    for(size_t i = 0; i < adj[node].size(); i++)
        if(!vis[adj[node][i]])
            dfs(adj[node][i]);

    st.push(node);
}

int main(int argc, char **argv)
{
    ios_base::sync_with_stdio(false);
    fin.tie(NULL);

    int n, m, i, j;

    fin >> n >> m;
    while(m--)
    {
        fin >> i >> j;
        adj[i].push_back(j);
    }

    for(i = 1; i <= n; i++)
        if(!vis[i])
            dfs(i);

    while(!st.empty())
    {
        fout << st.top() << " ";
        st.pop();
    }
    return 0;
}