Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #313655) | Cod sursa (job #2841143)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
const int NMAX=50005;
int N, M, in[NMAX], sorted[NMAX], L;
vector<int> g[NMAX];
queue<int> q;
void Kahn()
{
for(int i=1;i<=N;i++)
if(in[i]==0)
q.push(i);
int nod;
while(!q.empty()){
nod=q.front();
q.pop();
sorted[++L]=nod;
for(auto x: g[nod]){
in[x]--;
if(in[x]==0)
q.push(x);
}
}
for(int i=1;i<=L;i++)
fout<<sorted[i]<<' ';
}
int main()
{
fin>>N>>M;
int x, y;
for(int i=1;i<=M;i++){
fin>>x>>y;
g[x].push_back(y);
in[y]++;
}
Kahn();
fin.close();
fout.close();
return 0;
}