做题网站推荐: OpenJudge VIJOS UOJ CF JOYOI CODEVS 洛谷 RQNOJ BZOJ POJ HDU 牛客网

本站题目推荐: 高精度 模拟 排序 递推 贪心 递归 搜索 动态规划 数学 图论 数据结构 签到 实名认证 卡评测举报

输入输出 变量类型 顺序结构 选择结构 循环结构 一维数组 NOIP 资源下载


问题 2294. -- 种草地(树链剖分)

2294: 种草地(树链剖分)

时间限制: 1 Sec  内存限制: 128 MB
提交: 31  解决: 16
[上一题][提交][讨论版][状态][下一题]

题目描述

农夫约翰有N块贫瘠的牧场(2 <= N <= 100,000),有N-1条双向道路将这N个牧场连接了起来,每两个牧场间都有且仅有一条路径可相互到达。著名奶牛贝西经常抱怨:为什么连接牧场的道路上没有草可吃呢?

约翰非常喜欢贝西,今天约翰终于决定要在道路上种草了。约翰的种草工作被分成了M(1 <= M <=100,000)步操作。

在每一步中,下列两个事件中的一个会发生:
1.约翰会选择两个牧场,沿着两个牧场间的路径,在路径上的每一条道路上都种植1株牧草;
2.贝西会向约翰提问:在一条指定的道路上,种植了多少株牧草。

请帮助约翰回答贝西的问题。

输入

第一行有两个正整数N和M。

接下来N-1行,每行两个数,表示一条路径两端的牧场编号。

接下来M行,每行开头有一个字母,表示约翰的操作,P表示种植牧草,Q表示询问。接下来有两个数字,表示两个牧场的编号。

输出

对于每个询问,输出一行,一个数,表示该询问的答案。

样例输入

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

提示

《高级数据结构》例题12-2

来源:美国计算机竞赛 USACO 2011 Dec

标签

[上一题][提交][讨论版][状态][下一题]