Pagini recente » Cod sursa (job #3039316) | Cod sursa (job #1151652) | Cod sursa (job #1611591) | Cod sursa (job #1744286) | Cod sursa (job #1164272)
#include<stdio.h>
#include<vector>
using namespace std;
#define nmax 50005
int n, m, x, y, i, inc, sf, el;
vector <int> ma[nmax];
vector <int> ::iterator it;
int grint[nmax], co[nmax];
void citire()
{
scanf("%ld %ld",&n,&m);
for (i=1;i<=m;i++)
{
scanf("%ld %ld",&x,&y);
ma[x].push_back(y);
grint[y]++;
}
}
void rezolvare()
{
for (i=1;i<=n;i++)
if (grint[i]==0)
co[++sf]=i;
inc=1;
while (inc<=sf)
{
el=co[inc]; inc++;
for (it=ma[el].begin();it!=ma[el].end();it++)
{
grint[*it]--;
if (grint[*it]==0)
co[++sf]=*it;
}
}
}
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
citire();
rezolvare();
for (i=1;i<=n;i++)
printf("%ld ",co[i]);
return 0;
}