Pagini recente » Cod sursa (job #2727422) | Cod sursa (job #657874) | Cod sursa (job #1941118) | Cod sursa (job #424033) | Cod sursa (job #1358055)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream F("sortaret.in");
ofstream G("sortaret.out");
const int N = 50010;
int n,m,deg[N];
vector<int> v[N],ans;
queue<int> q;
int main()
{
F>>n>>m;
for (int i=1,x,y;i<=m;++i)
{
F>>x>>y;
deg[x]++;
v[y].push_back(x);
}
for (int i=1;i<=n;++i)
if ( deg[i] == 0 )
q.push(i);
while ( !q.empty() )
{
int x = q.front();
q.pop();
ans.push_back(x);
for (int i=0;i<int(v[x].size());++i)
if ( (--deg[ v[x][i] ]) == 0 )
q.push( v[x][i] );
}
reverse(ans.begin(),ans.end());
for (int i=0;i<n;++i)
G<<ans[i]<<' ';
}