Cod sursa(job #2485257)

Utilizator vladcainamisirVlad Cainamisir vladcainamisir Data 1 noiembrie 2019 11:04:53
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include<cstdio>
#include<vector>
#include<queue>
const int NMAX = 50000;
std :: vector<int>v[NMAX + 1];
int pred[NMAX + 1];
std :: queue<int>q;
int main()
{
    int n , m , x , y ;
    freopen("sortaret.in" , "r" , stdin);
    freopen("sortaret.out" , "w" , stdout);
    scanf("%d%d" , &n , &m);
    for(int i = 1; i <= m ; i ++)
    {
        scanf("%d%d" , &x , &y);
        pred[y] ++;
        v[x].push_back(y);
    }
    for(int i = 1 ; i <= n ; i ++)
    {
    if(pred[i] == 0)
        q.push(i);
    };
    while(q.empty() == false)
    {
        int aux = q.front();
        printf("%d " , aux);
        q.pop();
        for(int i = 0 ; i < v[aux].size() ; i ++)
        {
            pred[v[aux][i]] -- ;
            if(pred[v[aux][i]] == 0)
                q.push(v[aux][i]);
        }
    }
    return 0;
}