#include <bits/stdc++.h> using namespace std; const int N=30005; const int M=30005; int n, m; int head[N], E=0; int din[N]; bitset<N> f[N]; vector<int> ans; struct Edge{int v, ne;}e[M]; void add(int a, int b){ e[E].v=b; e[E].ne=head[a]; head[a]=E++; } queue<int> q; void bfs(){ while(!q.empty()){ int node=q.front(); q.pop(); ans.push_back(node); for(int i=head[node]; ~i; i=e[i].ne){ int v=e[i].v; --din[v]; if(!din[v]) q.push(v); } } } int main(){ memset(head, -1, sizeof head); memset(din, 0x00, sizeof din); cin>>n>>m; for(int i=0; i<m; ++i){ int a, b; cin>>a>>b; add(a, b); din[b]++; } for(int i=1; i<=n; ++i) if(!din[i]) q.push(i); bfs(); for(int i=ans.size()-1; i>=0; --i){ int u=ans[i]; f[u][u]=1; for(int j=head[u]; ~j; j=e[j].ne){ int v=e[j].v; f[u] |= f[v]; } } for(int i=1; i<=n; ++i) cout<<f[i].count()<<endl; return 0; }