Byteasar 国王终于屈服于 Byteburg 市民的要求,拨出一部分预算盈余用于在市内铺设自行车道。道路基础设施的皇家顾问已经提出了一个网络设计方案,并根据国王本人的要求进行了多次修改。该网络由连接某些交叉路口的单向路段组成。从交叉路口 $u$ 到另一个交叉路口 $v$ 的路径是一个由不同交叉路口组成的序列 $u = v_0, v_1, \dots, v_k = v$,使得每两个连续的交叉路口 $v_i, v_{i+1}$(对于 $0 \le i < k$)之间都有一条从 $v_i$ 指向 $v_{i+1}$ 的路段。
国王要求该网络必须是“公正的”,这意味着它应满足以下性质:如果无法从交叉路口 $v$ 到达交叉路口 $u$(即不存在从 $v$ 到 $u$ 的路径),那么从 $u$ 到 $v$ 最多只能有一条路径。国王认为这可以确保住在交叉路口 $v$ 附近的人不会嫉妒住在交叉路口 $u$ 附近的人。
市民自行车委员会最近获得了这份公正网络设计的副本,但他们对此非常不满。他们坚持认为所提议的网络过度限制了城市中自行车的通行。他们计划就此问题发布一份报告,为此他们需要一些确凿的数据。你的任务是确定可达性程度,即对于每个交叉路口 $v$,计算从 $v$ 出发可以到达的交叉路口数量。
输入格式
标准输入的第一行包含两个整数 $n$ 和 $m$ ($n \ge 2, m \ge 1$),由单个空格分隔,分别表示 Byteburg 的交叉路口数量和网络设计中的路段数量。交叉路口编号为 $1$ 到 $n$。
接下来的 $m$ 行指定了网络:每行包含两个整数 $a$ 和 $b$ ($1 \le a, b \le n, a \neq b$),由单个空格分隔,表示存在一条从交叉路口 $a$ 指向交叉路口 $b$ 的路段。每个有序对 $(a, b)$ 在输入中最多出现一次。保证输入的网络是公正的。
输出格式
输出应包含 $n$ 行,第 $i$ 行(对于 $i = 1, \dots, n$)应包含一个整数:从交叉路口 $i$ 出发可以到达的交叉路口数量。
样例
输入格式 1
7 7 1 4 1 6 4 2 6 2 2 1 5 3 3 7
输出格式 1
3 3 1 3 2 3 0
样例测试
- 1ocen: $n = 25, m = 600$,每个交叉路口都可以从其他任何交叉路口到达;
- 2ocen: $n = 55, m = 54$,包含一个孤立的交叉路口以及长度为 $2, \dots, 10$ 的不相交环;
- 3ocen: $n = 50\,000, m = 49\,999$,一条路径贯穿所有交叉路口;
- 4ocen: $n = m = 50\,000$,所有交叉路口排列在一个单环上。
子任务
测试集由以下子任务组成。每个子任务内可能包含多个测试点。
| 子任务 | 性质 | 分值 |
|---|---|---|
| 1 | $n \le 60$ | 12 |
| 2 | $n, m \le 5000$ | 8 |
| 3 | $n \le 50\,000, m \le 100\,000$,且满足:若 $u > v$,则不存在从 $u$ 到 $v$ 的路径 | 18 |
| 4 | $n \le 50\,000, m \le 100\,000$,且满足:若存在从 $u$ 到 $v$ 的路径,则不存在从 $v$ 到 $u$ 的路径 | 18 |
| 5 | $n \le 50\,000, m \le 100\,000$ | 44 |