// https://szkopul.edu.pl/problemset/problem/aKKSmtjWTtDOEHDqnmQ3-eAA/site/?key=statement
#include <bits/stdc++.h>
using namespace std;
#define int long long
constexpr int sizik = 50 * 1001;
#define ar std::array
#define pr std::pair
#define vec std::vector
typedef vec<vec<int>> _kra;
ar<std::vector<int>, sizik> kra, kra1, kra2;
int curr = 1, licz[sizik];
int curr1 = 1;
std::vector<int> post;
int visited[sizik];
void DFS(int v) {
if (visited[v] == curr1) return;
visited[v] = curr1;
for (const auto& u : kra[v]) {
DFS(u);
}
post.push_back(v);
}
int sss_dkn[sizik];
void DFS2(int v) {
if (visited[v] == curr1) return;
visited[v] = curr1;
sss_dkn[v] = curr;
licz[curr]++;
for (const auto& u : kra2[v]) {
DFS2(u);
}
}
void create_graph2(int n) {
for (int i = 1; i <= n; i++) {
for (const auto& a : kra[i]) {
if (sss_dkn[i] != sss_dkn[a]) {
kra1[sss_dkn[i]].push_back(sss_dkn[a]);
}
}
}
}
int dp[sizik];
void DFS3(int v, int p) {
visited[v] = curr1;
dp[v] = licz[v];
for (const auto& u : kra1[v]) {
if (u != p) {
DFS3(u, v);
dp[v] += dp[u];
}
}
}
int wchodzo[sizik];
void solve() {
int n, m;
std::cin >> n >> m;
for (int i = 0; i < m; i++) {
int a, b;
std::cin >> a >> b;
kra[a].push_back(b);
kra2[b].push_back(a);
}
for (int i = 1; i <= n; i++) {
if (visited[i] != curr1) {
DFS(i);
}
}
std::reverse(post.begin(), post.end());
curr = 1;
curr1++;
for (const auto& a : post) {
if (visited[a] != curr1) {
DFS2(a);
curr++;
}
}
curr1++;
create_graph2(n);
for (int i = 1; i < curr; i++) {
for (const auto& a : kra1[i]) {
wchodzo[a]++;
}
}
std::vector<int> odpal;
for (int i = 1; i < curr; i++) {
if (wchodzo[i] == 0) {
odpal.push_back(i);
}
}
for (const auto& a : odpal) {
DFS3(a, a);
}
for (int i = 1; i <= n; i++) {
std::cout << (dp[sss_dkn[i]] - 1) << '\n';
}
}
int32_t main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int t = 1;
for (; t > 0; t--) {
solve();
}
return 0;
}