Pagini recente » Cod sursa (job #1514820) | Cod sursa (job #1729603) | Cod sursa (job #1257983) | Cod sursa (job #2860725) | Cod sursa (job #1145842)
#include <cstdio>
#include <queue>
using namespace std;
int n,g[50001];
queue <int> q;
struct nod
{
int x;
nod* u;
}*a[50001];
void solve()
{
int i;
nod *nou;
for(i=1;i<=n;++i) if(!g[i]) q.push(i);
while(!q.empty())
{
nou=a[q.front()];
while(nou)
{
g[nou->x]--;
if(!g[nou->x]) q.push(nou->x);
nou=nou->u;
}
}
}
void read()
{
int x,y,m;
nod* nou;
freopen("sortaret.in","r",stdin);
scanf("%d%d",&n,&m);
while(m)
{
--m;
scanf("%d%d",&x,&y);
nou=new nod;
nou->u=a[x];
a[x]=nou;
a[x]->x=y;
g[y]++;
}
}
void write()
{
freopen("sortaret.out","w",stdout);
while(!q.empty())
{
printf("%d ",q.front());
q.pop();
}
printf("\n");
}
int main()
{
read();
solve();
write();
return 0;
}