Cod sursa(job #2149469)

Utilizator DovlecelBostan Andrei Dovlecel Data 2 martie 2018 17:35:47
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
const int N=50001;
vector <int> a[N];
vector <unsigned> sol;
queue <int> coada;
unsigned p[N],viz[N],n,m;
int main()
{
    unsigned i;
    int x,y;
    in>>n>>m;
    for(i=0;i<m;i++)
    {
        in>>x>>y;
        a[x].push_back(y);
        p[y]++;
    }
    for(i=1;i<=n;i++)
        if(p[i]==0)
        {
            coada.push(i);
            sol.push_back(i);
        }
    while(!coada.empty())
    {
        x=coada.front();
        for(i=0;i<a[x].size();i++)
        {
            y=a[x][i];
            p[y]--;
            if(p[y]==0)
            {
                coada.push(y);
                sol.push_back(y);
            }
        }
        coada.pop();
    }
    for(i=0;i<sol.size();i++)
        out<<sol[i]<<' ';
    return 0;
}