Pagini recente » Cod sursa (job #3339128) | Cod sursa (job #1244489) | Cod sursa (job #826197) | Cod sursa (job #3322903) | Cod sursa (job #3341376)
#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;
}