Cod sursa(job #3341376)

Utilizator Warrior.exeZgorcea Mihai-Alexandru Warrior.exe Data 19 februarie 2026 12:28:24
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

const int NMAX = 50001;

vector<int>G[NMAX];
queue<int>Depth,Rasp;
int ext_grad[NMAX];
int nr_noduri;

void citire(){
    int M;
    int nod1,nod2;
    fin>>nr_noduri>>M;
    for(int i=1;i<=M;i++){
        fin>>nod1>>nod2;
        G[nod1].push_back(nod2);
        ext_grad[nod2] ++;
    }
}

void sortaretop(){
    for(int i=1;i<=nr_noduri;i++){
        if(ext_grad[i] == 0){
            Depth.push(i);
        }
    }
    int nod;
    while(Depth.empty()==false){
        nod = Depth.front();
        Rasp.push(nod);
        Depth.pop();
        for(auto copil:G[nod]){
            ext_grad[copil] --;
            if(ext_grad[copil] == 0){
                Depth.push(copil);
            }
        }
    }
}

void afis(){
    while(Rasp.empty()==false){
        fout<<Rasp.front()<<" ";
        Rasp.pop();
    }
}

int main(){
    citire();
    sortaretop();
    afis();
    return 0;
}