A 市正在建设一套地下管线维护系统。城市中的各个重要设施通过地下管线相互连接,为了便于管理,这些设施被编号为 1 \sim N,任意两个设施之间存在且仅存在一条简单路径,整个系统构成一棵树。
每一条地下管线(即树中的边)都设有一个“维护计数值”,用于记录该管线被维护加固的次数。系统初始时,所有管线的维护计数值均为 0。
城市管理部门将依次执行 M 个操作,操作分为以下两种:
维护操作 对于给定的两个设施 u 和 v,沿着它们之间的地下管线路径,对路径上的每一条管线的维护计数值都增加 1。
查询操作 给定两个直接由一条管线相连的设施 u 和 v,查询它们之间这条管线当前的维护计数值。
请你编写程序,高效地处理所有操作。
第一行包含两个整数 N,M,分别表示设施数量和操作数量。
接下来 N-1 行,每行两个整数 U,V,表示设施 U 与设施 V 之间存在一条地下管线。
接下来 M 行,每行表示一个操作,格式如下之一:
P u v:表示一次维护操作。Q u v:表示一次查询操作(保证查询时的 u 与 v 直接相连)。对于每一个查询操作,输出一行一个整数,表示对应管线的维护计数值。
4 6 1 4 2 4 3 4 P 2 3 P 1 3 Q 3 4 P 1 4 Q 2 4 Q 1 4
2 1 2
6 6 2 3 3 4 5 3 6 1 1 2 Q 1 6 P 6 4 P 2 5 Q 1 2 P 6 5 Q 2 3
0 1 3
15 17 1 2 1 3 4 2 5 4 3 6 7 1 5 8 8 9 8 10 6 11 12 4 13 9 11 14 15 12 P 6 12 P 12 8 Q 2 1 P 4 6 Q 9 13 Q 1 2 P 5 9 P 9 14 P 11 3 P 9 15 Q 1 7 P 9 5 Q 8 5 P 6 9 P 12 4 Q 9 13 Q 6 11
1 0 2 0 5 0 2
对于 20\% 的数据,满足 2 \le N \le 300,2 \le M \le 300。
对于 30\% 的数据,满足 2 \le N \le 500,1 \le M \le 3500。
对于 100\% 的数据,满足 2 \le N \le 10^5,2 \le M \le 10^5,所有设施编号均在 1 \sim N 范围内,查询操作中保证查询的两个设施之间直接存在一条管线。