Cod sursa(job #2630558)

Utilizator Dragono63Stanciu Rares Stefan Dragono63 Data 26 iunie 2020 11:58:12
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.56 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];

queue<int> q;

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;
    q.pop();

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