#P1742. Mike and Shortcuts

Mike and Shortcuts

题目描述

最近,小贝忙于学习,考试和比赛。现在她想出去在城市里逛逛放松一下。

城市有 nn 个路口,从 11nn 编号。小贝家在 11 号路口,她从 11 号路口出发,走过一系列的路口。从路口 ii 到路口 jj 需要消耗 ij|i - j| 单位的能量。她走过一系列路口 p1​ =1,p2,...,pkp_1​ = 1, p_2​, ..., p_k​ 消耗的总能量等于 i=1k1pipi+1\sum_{i=1}^{k-1} |p_{i} - p_{i+1}|

当然,如果没有小路,一味步行是比较无聊的。小路是特别的路径,能让小贝从一个路口到另一个路口只消耗 11 单位的能量。小贝的城市总共恰好有 nn 条小路,第 ii 条小路允许小贝从路口 ii 走到路口 ai (iaiai+1)a_i\ (i ≤ a_i ≤ a_{i+1})(但不能反方向走),因此每个路口都有且只有一条小路。严格来说,如果小贝选择一系列路口 p1=1,p2,...,pkp_1 = 1, p_2, ..., p_k,那么对于每个 1i<k1 ≤ i < k 满足 pi+1=apip_{i+1} = a_{p_i},并且 apipia_{p_i} ≠ p_i,从路口 pip_i 到路口 pi+1p_{i+1},小贝只会消耗 11 单位能量,而不是 pipi+1|p_i - p_{i+1}|。 例如,如果小贝选择路口序列 $p_1 = 1, p_2 = a_{p_1}, p_3 = a_{p_2}, ..., p_k = a_{p_{k-1}}$,她总共消耗 k1k - 1 单位的能量。

在她开始闲逛之前,她请你帮她计算从她家到达每个路口最少消耗多少能量。

输入格式

第一行包含一个整数 n (1n200000)n\ (1 ≤ n ≤ 200 000),表示小贝城市的路口数量。

第二行包含 nn 个整数 a1,a2,...,an (iain,aiai+1)a_1, a_2, ..., a_n\ (i ≤ a_i ≤ n, a_i\le a_{i+1}),给出小贝城市的小路,允许小贝只消耗 11 单位能量从路口 ii 到路口 aia_i。请注意小路不能走反方向(从 aia_iii)。

输出格式

输出 nn 个整数 m1,m2,...,mnm_1,m_2, ..., m_n,其中 mim_i,表示从路口 11 到路口 ii 的最小能量花费。

3
2 2 3
0 1 2
5
1 2 3 4 5
0 1 2 3 4
7
4 4 4 4 7 7 7
0 1 2 1 2 3 3