Cod sursa(job #2630562)

Utilizator Dragono63Stanciu Rares Stefan Dragono63 Data 26 iunie 2020 12:05:42
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.4 kb
#include <bits/stdc++.h>

using namespace std;
/****************************************************/
ifstream f("sortaret.in");
ofstream g("sortaret.out");
/****************************************************/
const int nmax  = 50069;
int n , m , cont;
int rasp[nmax];
vector <int> vecini[nmax];

bool vizitat[nmax];
/****************************************************/
///-----------------------------------------------------------------------
inline void readInput()
{
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x , y;
        f>>x>>y;
        vecini[x].push_back(y);
    }
    cont = n;
}
///-----------------------------------------------------------------------
void dfs(int nod)
{
    vizitat[nod]=1;

    for(int i=0 ; i<vecini[nod].size();i++)
    {
        if(!vizitat[vecini[nod][i]])
        {
            dfs(vecini[nod][i]);
        }
    }
    rasp[cont] = nod;
    cont--;
}
///-----------------------------------------------------------------------
inline void Solution()
{
    for(int i=1;i<=n;i++)
    {
        if(!vizitat[i]) dfs(i);
    }
}
///-----------------------------------------------------------------------
inline void Afisare()
{
    for(int i=1;i<=n;i++) g<<rasp[i]<<" ";
}
///-----------------------------------------------------------------------
int main()
{
    readInput();
    Solution();
    Afisare();
    return 0;
}