#include<bits/stdc++.h>
using namespace std;
vector<int>b[100001];
vector<int>f[100001];
int d[100001],su[100001],ans,vis[100001],m,dp[100001];
queue<int>q;
int n;
void tpsort(){
int e;
for(int i=1;i<=n;i++){
if(d[i]==0){
e=i;
q.push(e);
vis[i]=1;
dp[i]=1;
}
}
while(!q.empty()){
int k=q.front();
su[++ans]=k;
q.pop();
for(int i=0;i<b[k].size();i++){
d[b[k][i]]--;
dp[b[k][i]]=max(dp[b[k][i]],dp[k]+1);
if(d[b[k][i]]==0&&vis[b[k][i]]!=1){
q.push(b[k][i]);
vis[b[k][i]]=1;
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++){
int s,e;
cin>>s>>e;
b[s].push_back(e);
}
tpsort();
for(int i=1;i<=n;i++)cout<<dp[i]<<" ";
return 0;
}