Cod sursa(job #3304309)

Utilizator AndreiEsteNebunAndrei Mateescu AndreiEsteNebun Data 22 iulie 2025 14:40:15
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>

using namespace std;

string filename = "sortaret";

ifstream fin(filename + ".in");
ofstream fout(filename + ".out");

const int NMAX = 50000;
vector<int> adj[NMAX + 5];
int gradin[NMAX + 5];

int main()
{
    int n,m;
    fin>>n>>m;

    for(int i=1;i<=m;i++)
    {
        int u,v;
        fin>>u>>v;
        adj[u].push_back(v);
        gradin[v]++;
    }
    vector<int> rez;
    queue<int> q;
    for(int i=1; i<=n; i++)
    {
        if(gradin[i]==0)
        {
            q.push(i);
        }
    }
    while(!q.empty())
    {
        int nod = q.front();
        q.pop();
        rez.push_back(nod);
        for(auto it : adj[nod])
        {
            gradin[it]--;
            if(gradin[it]==0)
            {
                q.push(it);
            }
        }
    }
    for(auto it : rez)
        fout<<it<<' ';
}