Dotcpp  >  编程题库  >  蓝桥杯2024年第十五届省赛真题-狡兔 k 窟
题目 3247:

蓝桥杯2024年第十五届省赛真题-狡兔 k 窟

时间限制: 2s 内存限制: 512MB 提交: 168 解决: 22

题目描述

一只兔子名叫小蓝,它异常狡猾,在土中挖了若干洞窟并且设置了很多出入口来应对紧急情况。它一共有 n 个通往地面的出入口,在地面上这 n 个出入口之间由 n − 1 条长度为 1 的双向通路连成一个连通图。第 i 个出入口属于第 ci个洞窟,因此小蓝可以在任意一个属于 ci 的出入口从地面进入洞窟然后从任意一个属于 ci 的出入口跑出到达地面。

小蓝提出了 m 个逃跑路线,第 i 个路线希望从出入口 si 逃往 ti ,它希望在逃跑的过程中在地面上跑动的距离尽可能短,请为每条路线计算逃跑时在地面上跑动的最短距离。

输入格式

输入的第一行包含两个正整数 n, m ,用一个空格分隔。

第二行包含 n 个正整数 c1, c2, · · · , cn ,相邻整数之间使用一个空格分隔。

接下来 n − 1 行,第 i 行包含两个整数 ui, vi ,用一个空格分隔,表示地面上的一条通路连接 ui 和 vi 。

接下来 m 行,第 i 行包含两个整数 si, ti ,用一个空格分隔。

输出格式

输出 m 行,每行包含一个整数,依次表示每个询问的答案。

样例输入

6 3
1 3 2 1 2 3
1 2
1 3
2 4
2 5
3 6
2 6
3 2
4 3

样例输出

0
1
1

提示

对于 20% 的评测用例,1 ≤ n, m, ci ≤ 100 ;

对于所有评测用例,1 ≤ n, m, ci ≤ 5000 ,1 ≤ ui, vi, si, ti ≤ n 。

标签