Квіти
Обмеження: 2 сек., 256 МіБ
Джон і Брюс часто відвідують ліс неподалік свого будинку. У лісі є nn прекрасних полян і n−1n−1 двостороння стежка. Кожна стежина з’єднує дві поляни. З кожної поляни стежками можна добратися до будь-якої іншої. Тому є рівно один простий шлях (тобто шлях, який складається з різних стежок) від однієї поляни до іншої.
Джон: Брюсе, ці квіти для тебе!
Брюс: Чудово, вони прекрасні! Але чому їх тільки чотири?
Хлопці відвідуватимуть ліс упродовж mm днів поспіль. Перед першим днем на ii-й поляні росте fifi дуже гарних квітів. На початку кожного дня на кожній поляні з’являтиметься по одній додатковій квітці.
Після цього Джон і Брюс або зірвуть усі квіти на поляні, або порахують кількість квіток на простому шляху між двома полянами включно.
Вхідні дані
У першому рядку задано два цілі числа nn і mm.
Наступний рядок містить nn цілих чисел fifi.
Кожен із наступних n−1n−1 рядків містить цілі числа aiai та bibi — поляни, з’єднані ii-ою стежкою.
Кожен із наступних mm рядків
починається з одного символа (P
чи C
). Якщо це
P
, то після нього слідує ціле число gigi — це значить, що в ii-ий день хлопці зірвуть усі квіти на
поляні gigi. Інакше після символа
C
слідують два цілі числа uiui та vivi. У цьому разі Джон і Брюс порахують
кількість квітів на простому шляху між полянами uiui та vivi включно.
Вихідні дані
Для кожного підрахунку виведіть рядок, що містить обчислену кількість квітів.
Обмеження
1≤n,m≤1051≤n,m≤105,
0≤fi≤1090≤fi≤109,
1≤ai,bi,gi,ui,vi≤n1≤ai,bi,gi,ui,vi≤n.
Приклади
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
2 3 4 7 1 2 C 1 2 P 2 C 1 2 | 13 8 |
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
1 1 100 C 1 1 | 101 |