Pagini recente » Profil horatiudum | Cod sursa (job #1990345) | Cod sursa (job #1215772) | Cod sursa (job #449628) | Cod sursa (job #1997461)
#include <iostream>
#include <fstream>
using namespace std;
const int N=100001;
const int M=200001;
int nr, n, m;
int lst[N], vf[2*M], urm[2*M], nrp[N], q[N];
void adauga(int x, int y)
{
nr++;
nrp[y]++;
vf[nr]=y;
urm[nr]=lst[x];
lst[x]=nr;
}
int main()
{
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int x, y, poz;
in>>n>>m;
for(int i=1; i<=m; i++)
{
in>>x>>y;
adauga(x,y);
}
int p=1, u=0;
for(int i=1; i<=n; i++)
{
if( nrp[i]==0 )
q[++u]=i;
}
while(p<=u)
{
x=q[p++];
out << x << " ";
poz=lst[x];
while(poz!=0)
{
y=vf[poz];
--nrp[y];
if(nrp[y]==0)
q[++u]=y;
poz=urm[poz];
}
}
/*
for(int i=0; i<n; i++)
out<<q[i]<<" ";
*/
return 0;
}