Pagini recente » Cod sursa (job #2396820) | Cod sursa (job #339785) | Cod sursa (job #680865) | Cod sursa (job #1953180) | Cod sursa (job #2526152)
#include <fstream>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
const int N=50001;
const int M=2*N;
int n,m, lst[N], vf[2*M], urm[2*M], nrp[N], st, dr, nr, q[N];
void adauga(int x, int y)
{
vf[++nr]=y;
urm[nr]=lst[x];
lst[x]=nr;
nrp[y]++;
}
int main()
{
fin>>n>>m;
for(int i=1; i<=m; i++)
{
int x,y;
fin>>x>>y;
adauga(x,y);
}
st=0, dr=-1;
for(int i=1; i<=n; i++)
if(nrp[i]==0)
q[++dr]=i;
while(st<=dr)
{
int x=q[st++];
//prel x;
for(int p=lst[x]; p!=0; p=urm[p])
{
int y=vf[p];
nrp[y]--;
if(nrp[y]==0)
q[++dr]=y;
}
}
for(int i=0; i<n; i++)
fout<<q[i]<<" ";
return 0;
}