OI XXV - dro

// 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;
}