这天,小明在机房学习。
他发现机房里一共有 n 台电脑,编号为 1 到 n,电脑和电脑之间有网线连接,一共有 n − 1 根网线将 n 台电脑连接起来使得任意两台电脑都直接或者间接地相连。
小明发现每台电脑转发、发送或者接受信息需要的时间取决于这台电脑和多少台电脑直接相连,而信息在网线中的传播时间可以忽略。比如如果某台电脑用网线直接连接了另外 d 台电脑,那么任何经过这台电脑的信息都会延迟 d 单位时间 (发送方和接收方也会产生这样的延迟,当然如果发送方和接收方都是同一台电脑就只会产生一次延迟)。
小明一共产生了 m 个疑问:如果电脑 ui 向电脑 vi 发送信息,那么信息从 ui 传到 vi 的最短时间是多少?
输入共 n + m 行,第一行为两个正整数 n, m。
后面 n − 1 行,每行两个正整数 x, y 表示编号为 x 和 y 的两台电脑用网线直接相连。
后面 m 行,每行两个正整数 ui , vi 表示小明的第 i 个疑问。
4 3 1 2 1 3 2 4 2 3 3 4 3 3
5 6 1
这四台电脑各自的延迟分别为 2, 2, 1, 1。
对于第一个询问,从 2 到 3 需要经过 2, 1, 3,所以时间和为 2 + 2 + 1 = 5。
对于第二个询问,从 3 到 4 需要经过 3, 1, 2, 4,所以时间和为 1+2+2+1 = 6。
对于第三个询问,从 3 到 3 只会产生一次延迟,所以时间为 1。
对于 30% 的数据,保证 n, m ≤ 1000;
对于 100% 的数据,保证 n, m ≤ 100000 。
Dotcpp编程2022年六月月赛,欢迎报名参赛!
蓝桥杯决赛刚刚结束,快来测测身手吧!
比赛结束后欢迎提交题解,获得优质题解的小伙伴将获得小礼品一份~
PS:Dotcpp支持创建自主比赛,适合社团、老师教学训练,欢迎使用!