终于再见
题号:NC308480
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}

       在 2025 年的春天我们与大家相见,从那时起,小团体思念过去,憧憬未来,我们《还会再见吗?》
\hspace{15pt}原来 2026 年时,2025 年的《那是我们的影子》已经是过去对未来的写照,期待下次再见! 
\hspace{400pt} --- 以此纪念故人
\hspace{15pt}\textbf{小团体}n 个城市,编号为 1n,城市之间通过 m 条无向道路连接,每条道路的边权为 1,对于一个城市的繁华度是该城市所连接的道路数量。
\hspace{15pt}我们将每个城市的繁华度列出并去重后,从小到大排序得到 a_1,a_2,\dots,a_k,现在将所有繁华度为 a_i \left(1\leq i\leq k\right) 的城市称作 i 级城市。
\hspace{15pt}Bingbong 现在需要你帮助他回答对于任意编号为 x \left(1\leq x\leq n\right) 的城市,从该城市出发,前往比该城市级别更高的城市的最短路径长度,或报告无法到达。

\hspace{15pt}注意:此处 k 级城市为最高级城市。

输入描述:

    \hspace{15pt}第一行输入两个整数 n,m\left(2\leq n\leq 2\times 10^5;\, 1\leq m\leq \min\big(2\times 10^5,\tfrac{n\times (n-1)}{2}\big)\right),表示城市个数和道路条数。
\hspace{15pt}此后 m 行,第 i 行输入两个整数 u_i,v_i\left(1\leq u_i,v_i\leq n\right),表示第 i 条道路连接城市 u_iv_i
\hspace{15pt}保证数据不存在重边和自环。

输出描述:

\hspace{15pt}在一行上输出 n 个整数,其中第 x 个整数表示编号为 x 的城市通往更高级城市的最短路径长度,若无法到达,则输出 -1
示例1

输入

复制
5 4
2 3
3 4
4 5
3 5

输出

复制
-1 1 -1 1 1
示例2

输入

复制
5 6
1 2
2 3
3 4
4 5
1 5
2 4

输出

复制
1 -1 1 -1 1