#2335. 希蒙坐公交车

希蒙坐公交车

希蒙坐公交车

题目背景

赛码所在的城市具有复杂的交通系统,这让希蒙想来上集训变得非常的麻烦。

该城市的结构可以描述成一个nn个节点的树,希蒙住在一号点上。其中有mm条公交路径,用其两个端点描述u,vu,v,公交车会在u,vu,v间的最短路径上往返运行。希蒙可以在公交车上中途下车,但是希蒙只能在路径端点上车。

希蒙想知道,他到2n2-n各点至少需要坐几趟车,若不能到达,输出1-1

题目描述

给定一棵nn个节点的树,树上有mm条路径u,vu,v

11号点出发,你可以从路径端点上车到路径上任意一点,求到ii号点最少需要坐几趟车。

输入格式

第一行两个整数n,mn,m,表示节点数与路径数。

第二行n1n-1个整数,其中第ii个整数表示i+1i+1号节点的父亲节点fai+1fa_{i+1}

接下来共mm行,每行两个整数u,vu,v,表示路径端点。

输出格式

你一共需要输出n1n-1个整数ansi+1ans_{i+1},表示到达i+1i+1号点最少需要坐的车数,若不可达,请输出1-1

样例 #1

样例输入 #1

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

样例输出 #1

1
1
2
2
-1
3

提示

数据范围:

对于50%的数据,我们保证1<=n,m<=1031<=n,m<=10^3

对于100%的数据,我们保证1<=n,m<=2×105,1<=fai<i,1<=u,v<=n1<=n,m<=2\times 10^5,1<=fa_i<i,1<=u,v<=n