Pagini recente » Cod sursa (job #2961137) | Cod sursa (job #3249114) | Cod sursa (job #290678) | Cod sursa (job #2583683) | Cod sursa (job #1889704)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#define buffs 1048576
FILE *f=freopen("sortaret.in","r",stdin);
char buff[buffs];
int pos=0;
int n,m,a,b,i,_g[50002],q[50002],lq=0;
std::vector<int> v[50002];
inline void read(int &nr)
{
nr=0;
while(buff[pos]<'0'||buff[pos]>'9') if(++pos==buffs) fread(buff,1,buffs,stdin),pos=0;
while(buff[pos]>='0'&&buff[pos]<='9')
{
nr=(nr<<1)+(nr<<3)+buff[pos]-48;
if(++pos==buffs) fread(buff,1,buffs,stdin),pos=0;
}
}
int main()
{ freopen("sortaret.out","w",stdout);
fread(buff,1,buffs,stdin),pos=0;
read(n);read(m);
for(i=1;i<=m;i++)
{
read(a);read(b);
v[a].push_back(b);_g[b]++;
}
for(i=1;i<=n;i++)
if(_g[i]==0) q[++lq]=i;
for(i=1;i<=lq;i++)
{ m=q[i];
a=v[m].size();
for(b=0;b<a;b++)
{_g[v[m][b]]--;
if(_g[v[m][b]]==0) q[++lq]=v[m][b];
}
}
for(i=1;i<=n;i++)
printf("%d ",q[i]);
}