#P8974. 『GROI-R1』 古朴而优雅

    ID: 8123 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>数学图论O2优化最近公共祖先,LCA基环树

『GROI-R1』 古朴而优雅

题目背景

会馆内忽地安静了下来。

「敝姓言,名杉。」

他的声音沉稳而凝重,略带沙哑,却不失力度,极具穿透力。每个字都重重地打在耳畔,渗进头脑里,让人想不认真听都难。

「这所学院的院长。」

题目描述

杉虽然年事已高,但是还是保持与时俱进。他学习了深度优先遍历算法,觉得这种新潮的东西在一所古朴而优雅的学院里会很受欢迎。所以,他找到了在走廊里晃荡的寒,向他提出了一个问题:

「我们知道,对一棵树进行深度优先遍历可以用下面的伪代码很好地解决。」

$$\begin{array}{l} \text{DFS-TREE}(u)\\ \begin{array}{ll} 1 & p\gets p+1\\ 2 & t_p\gets u\\ 3 & vis_u\gets 1\\ 4 & \textbf{for }\text{each edge }(u,v)\in E \\ 5 & \qquad \textbf{if }vis_v=0\\ 6 & \qquad \qquad \text{DFS-TREE}(v)\\ 7 & p\gets p+1\\ 8 & t_p\gets u\\ \end{array} \end{array} $$

起初,所有变量或数组的值均为 00

「我们把调用 DFS-TREE(1)\text{DFS-TREE}(1) 在遍历过程中得到的数组 tt 称为这棵树的遍历顺序。」

「你看这段代码的第 44 行,这句话遍历每一条边的顺序是不固定的。」

寒素来最讨厌不确定的东西,可是碍于院长的颜面,还是继续听下去。

「你能数出这段代码会生成多少种不同的遍历顺序吗?」

寒发现他曾经做过这个题,很快地报出了解法。本以为就结束了,可是杉继续说:

「如果我在树上增加一条边,你还会做吗?」

寒发现他的那点水平完全不够了,于是他去请教玘。玘却认为这道题目依然很简单,他告诉了寒这道题的做法。可是寒找不到杉了。

这个世界到底怎么了呢?

输入格式

第一行,两个整数 nnqq,表示树上有 nn 个结点,编号为 1n1\sim n,有 qq 次询问。

接下来 n1n-1 行,每行两个整数 u,vu,v,描述这棵树上的一条边。

接下来 qq 行,每行两个整数 x,yx,y,表示在树上添加连接 xxyy 的一条边,询问有多少种可能的遍历顺序。注意:每次询问是互相独立的,也就是说,上一次询问添加的边不会保留到下一次询问。

输出格式

qq 行,每行一个整数表示这次询问的答案对 109+710^9+7 取模后得到的值。

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

提示

样例解释

对于第一次询问可以得到如图:

能得到的遍历顺序有:

  • {1,2,3,3,2,4,4,1}\{1,2,3,3,2,4,4,1\}
  • {1,4,4,2,3,3,2,1}\{1,4,4,2,3,3,2,1\}
  • {1,3,2,2,3,4,4,1}\{1,3,2,2,3,4,4,1\}
  • {1,4,4,3,2,2,3,1}\{1,4,4,3,2,2,3,1\}

对于第二次询问可以得到如图:

能得到的遍历顺序有:

  • {1,2,2,3,3,4,4,1}\{1,2,2,3,3,4,4,1\}
  • {1,2,2,4,4,3,3,1}\{1,2,2,4,4,3,3,1\}
  • {1,3,3,2,2,4,4,1}\{1,3,3,2,2,4,4,1\}
  • {1,3,3,4,4,2,2,1}\{1,3,3,4,4,2,2,1\}
  • {1,4,4,2,2,3,3,1}\{1,4,4,2,2,3,3,1\}
  • {1,4,4,3,3,2,2,1}\{1,4,4,3,3,2,2,1\}

数据范围

本题采用捆绑测试。

测试点编号 数据范围 特殊性质 分值
Subtask1\text{Subtask1} n,q8n,q\le8 55
Subtask2\text{Subtask2} n,q20n,q\le20 1010
Subtask3\text{Subtask3} n,q500n,q\le500
Subtask4\text{Subtask4} n,q3000n,q\le3000 1515
Subtask5\text{Subtask5} n,q2×105n,q\le2\times10^5 A\text{A}
Subtask6\text{Subtask6} B\text{B} 1010
Subtask7\text{Subtask7} 3535

特殊性质 A\text{A}:保证每一次询问的边 (x,y)E(x,y)\in E

特殊性质 B\text{B}:保证树退化成一条链。

对于 100%100\% 的数据保证 1n,q2×1051\le n,q\le2\times10^51u,v,x,yn1\le u,v,x,y\le nxyx\ne y