#P17218. [2025年南开中学集训]树

[2025年南开中学集训]树

树(tree)

题目描述

小 B 在复习数据结构,他给了你一棵树,根节点为 11,总共有 nn 个节点。

他想要跟你玩一个游戏,每次小 B 先给出一个区间 [l,r][l,r],只关心 [l,r][l,r] 内部所有点在树上的最小连通块,即提取出 [l,r][l,r] 的虚树。

然后你可以随机选择一个 [l,r][l,r] 的虚树内部的点,如果选到的点在虚树上的子树有完美匹配,那么你获胜,否则小 B 获胜。

游戏一定有 qq 轮,每轮的 l,rl,r 是不同的,你需要求出你获胜的概率乘上 [l,r][l,r] 虚树大小后的结果,可以证明该答案一定为整数。

输入格式

从文件 tree.in 中读入数据。

第一行两个整数 n,qn,q,表示树上节点的数量和询问的数量。

接下来 n1n-1 行,每行两个整数 x,yx,y 表示树上的一条边。

接下来 qq 行每行两个整数 l,rl,r 表示询问的区间。

输出格式

输出到文件 tree.out 中。

qq 行,每行一个整数表示答案。

样例 1 输入

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

样例 1 输出

1
1
2
2
3

样例 1 解释

对于第三组询问,虚树内的点包含 {1,2,3,4}\{1,2,3,4\},其子树中具有完美匹配的点有 {1,2}\{1,2\}

附加样例

见下发文件中的对应文件。

样例 输入文件 答案文件
2 tree/tree2.in tree/tree2.ans
3 tree/tree3.in tree/tree3.ans
4 tree/tree4.in tree/tree4.ans
5 tree/tree5.in tree/tree5.ans
6 tree/tree6.in tree/tree6.ans

数据范围

对于所有数据,保证 1n2×1051\le n\le 2\times10^51q7×1041\le q\le 7\times10^41x,yn1\le x,y\le n1lrn1\le l\le r\le n

子任务 分值 附加限制
1 10 n,q5×103n,q\le 5\times10^3
2 l=1l=1
3 15 每个点度数均为 1122
4 20 询问的 l,rl,r 独立均匀从 [1,n][1,n] 内随机,若 l>rl>r 则交换 l,rl,r
5 10 n6×104n\le 6\times10^4
6 15 n105n\le 10^5
7 20 无特殊限制