Pagini recente » Monitorul de evaluare | Cod sursa (job #2234080) | Cod sursa (job #2472504) | Cod sursa (job #2010056) | Cod sursa (job #3337172)
#include <bits/stdc++.h>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
const int NMAX = 50005;
vector <int> G[NMAX];
int n,m;
int in_deg[NMAX];
vector <int> sol;
void sortareTopo(){
queue <int> q;
for (int i=1;i<=n;i++){
if (in_deg[i]==0) q.push(i);
}
while (!q.empty()){
int nod = q.front();
q.pop();
sol.push_back(nod);
for (auto vecin : G[nod]){
in_deg[vecin]--;
if (in_deg[vecin]==0) q.push(vecin);
}
}
}
int main(){
f>>n>>m;
for (int i=1;i<=m;i++){
int nod1, nod2;
f>>nod1>>nod2;
G[nod1].push_back(nod2);
in_deg[nod2]++;
}
sortareTopo();
for (auto elem : sol) g<<elem<<" ";
return 0;
}