Pagini recente » Cod sursa (job #1645428) | Cod sursa (job #2621724) | Cod sursa (job #2461237) | Cod sursa (job #2128245) | Cod sursa (job #950740)
Cod sursa(job #950740)
#include<stdio.h>
#include<vector>
using namespace std;
int N,M,S,x,y,v[50100],fringe[100100],r[50100];
vector <int> a[50100];
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i=1;i<=M;++i)
{
scanf("%d%d",&x,&y);
a[x].push_back(y);
v[y]=-1;
}
for(int j=1;j<=N;++j)
if(v[j]==0)
{
int first=1;
int last=1;
fringe[first]=j;
while(first<=last)
{
x=a[fringe[first]].size();
for(int i=0;i<x;++i)
{
++last;
fringe[last]=a[fringe[first]][i];
v[fringe[last]]=v[fringe[first]]+1;
}
++first;
}
}
for(int i=1;i<=N;++i)
{
++r[v[i]];
}
for(int i=1;i<=N;++i)
r[i]=r[i]+r[i-1];
for(int i=1;i<=N;++i)
{
printf("%d ",r[v[i]]);
--r[v[i]];
}
return 0;
}