4147 - 管线维护

题目描述

A 市正在建设一套地下管线维护系统。城市中的各个重要设施通过地下管线相互连接,为了便于管理,这些设施被编号为 1 \sim N,任意两个设施之间存在且仅存在一条简单路径,整个系统构成一棵树

每一条地下管线(即树中的边)都设有一个“维护计数值”,用于记录该管线被维护加固的次数。系统初始时,所有管线的维护计数值均为 0

城市管理部门将依次执行 M 个操作,操作分为以下两种:

  1. 维护操作 对于给定的两个设施 uv,沿着它们之间的地下管线路径,对路径上的每一条管线的维护计数值都增加 1

  2. 查询操作 给定两个直接由一条管线相连的设施 uv,查询它们之间这条管线当前的维护计数值。

请你编写程序,高效地处理所有操作。

输入

第一行包含两个整数 N,M,分别表示设施数量和操作数量。

接下来 N-1 行,每行两个整数 U,V,表示设施 U 与设施 V 之间存在一条地下管线。

接下来 M 行,每行表示一个操作,格式如下之一:

  • P u v:表示一次维护操作。
  • Q u v:表示一次查询操作(保证查询时的 uv 直接相连)。
输出

对于每一个查询操作,输出一行一个整数,表示对应管线的维护计数值。

样例

输入

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 3002 \le M \le 300

对于 30\% 的数据,满足 2 \le N \le 5001 \le M \le 3500

对于 100\% 的数据,满足 2 \le N \le 10^52 \le M \le 10^5,所有设施编号均在 1 \sim N 范围内,查询操作中保证查询的两个设施之间直接存在一条管线。

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 0
通过人数 0
金币数量 3 枚
难度 基础


上一题 下一题