#include<bits/stdc++.h>
using namespace std;
const int MAXN=100010;
const int MAXM=200010;
queue<int>q;
int n,m,ans,r[MAXN],cnt[MAXN];
int v[MAXM],head[MAXN],nxt[MAXM],idx;
void addEdge(int uu,int vv)
{
idx++;
nxt[idx]=head[uu];
head[uu]=idx;
v[idx]=vv;
r[vv]++;
}
void tp(int s)
{
q.push(s);
cnt[s]=1;
while(!q.empty())
{
int uu=q.front();
q.pop();
for(int i=head[uu];i!=0;i=nxt[i])
{
int vv=v[i];
r[vv]--;
cnt[vv]=max(cnt[uu]+1,cnt[vv]);
if(!r[vv])
{
r[vv]--;
q.push(vv);
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int uu,vv;
cin>>uu>>vv;
addEdge(uu,vv);
}
for(int i=1;i<=m;i++) if(!r[i]) tp(i);
for(int i=1;i<=n;i++) cout<<cnt[i]<<"\n";
}