题目描述
-
神犇家门口种了一棵苹果树。苹果树作为一棵树,当然是呈树状结构,每根树枝连接两个苹果,每个苹果都可以沿着一条由树枝构成的路径连到树根,而且这样的路径只存在一条。由于这棵苹果树是神犇种的,所以苹果都发生了变异,变成了各种各样的颜色。我们用一个1到N之间的正整数来表示一种颜色。树上一共有N个苹果。每个苹果都被编了号码,号码为一个1到N之间的正整数。我们用0代表树根。只会有一个苹果直接连到树根。
-
有许许多多的人来神犇家里膜拜神犇。可神犇可不是随便就能膜拜的。前来膜拜神犇的人需要正确回答一个问题,才能进屋膜拜神犇。这个问题就是,从树上编号为N的苹果出发,由树枝走到编号为N的苹果,路径上经过的苹果一共有多少种不同的颜色(包括苹果u和苹果v的颜色)?不过神犇注意到,有些来膜拜的人患有色盲症。具体地说,一个人可能会认为颜色a就是颜色b,那么他们在数苹果的颜色时,如果既出现了颜色a的苹果,又出现了颜色b的苹果,这个人只会算入颜色b,而不会把颜色a算进来。
-
神犇是一个好人,他不会强人所难,也就会接受由于色盲症导致的答案错误(当然答案在色盲环境下也必须是正确的)。不过这样神犇也就要更改他原先数颜色的程序了。虽然这对于神犇来说是小菜一碟,但是他想考验一下你。你能替神犇完成这项任务吗?
数据范围
n < = 5 ∗ 1 0 4 , m < = 1 0 5 n<=5*10^4,m<=10^5 n<=5∗104,m<=105
题目分析
- 听说又是一道鬼畜的模板题。
- 这道题
显然使用树上莫队。 - 普通莫队是在序列上做的,如何转移到树上呢?
- 最直接的思路:把树强制转成序列。
- 恭喜你,你猜对了。
树转序列
- 采用一种神奇的东西(具体叫什么序也不清楚)。
- 就是在遍历一棵树的时候,如果递归到了这个点,把它扔进序列中,如果回溯,再一次把它扔进序列中。
- 盗个图:
- 那么这个序列就是 A B E E F K K F B C G G H H I I C A ABEEFKKFBCGGHHIICA ABEEFKKFBCGGHHIICA
- 我们发现,对于一条路径 x − > y x->y x−>y,我们分类讨论。
- 先设 s t [ i ] st[i] st[i]为 i i i这个点第一次在序列中的位置, e d [ i ] ed[i] ed[i]表示的是第二次,也是最后一次。
- 若 x x x与 y y y中一个为它们的 L C A LCA LCA,那么它们的路径就是序列 [ s t [ x ] , s t [ y ] ] [st[x],st[y]] [st[x],st[y]]中只出现过一次的点。
- 例如 A − > K A->K A−>K,序列为 A B E E F K ABEEFK ABEEFK
- 其中出现过一次的为