CF1491H.Yuezheng Ling and Dynamic Tree

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Yuezheng Ling gives Luo Tianyi a tree which has nn nodes, rooted at 11 .

Luo Tianyi will tell you that the parent of the ii -th node is aia_i ( 1ai<i1 \leq a_i<i for 2in2 \le i \le n ), and she will ask you to perform qq queries of 22 types:

  1. She'll give you three integers ll , rr and xx ( 2lrn2 \le l \le r \le n , 1x1051 \le x \le 10^5 ). You need to replace aia_i with max(aix,1)\max(a_i-x,1) for all ii with lirl \leq i \leq r .
  2. She'll give you two integers uu , vv ( 1u,vn1 \le u, v \le n ). You need to find the LCA of nodes uu and vv (their lowest common ancestor).

输入格式

The first line contains two integers nn and qq ( 2n,q1052\leq n,q \leq 10^5 ) — the number of nodes and the number of queries, respectively.

The second line contains n1n-1 integers a2,a3,,ana_2, a_3,\dots, a_n ( 1ai<i1 \le a_i < i ), where aia_i is the parent of the node ii .

Next qq lines contain queries. For each query, the first integer of each line is tt ( t=1t = 1 or 22 ) — the type of the query.

If t=1t = 1 , this represents the query of the first type. Then, three integers will follow: ll , rr , xx ( 2lrn2 \le l \le r \le n , 1x1051 \le x \le 10^5 ), meaning that you have to replace aia_i with max(aix,1)\max(a_i-x,1) for all ii with lirl \leq i \leq r .

If t=2t = 2 , this represents the query of the second type. Then, two integers will follow: uu and vv ( 1u,vn1 \le u, v \le n ), and you have to find the LCA of uu and vv .

It's guaranteed that there is at least one query of the second type.

输出格式

For each query of the second type output answer on a new line.

输入输出样例

  • 输入#1

    6 4
    1 2 3 3 4
    2 3 4
    1 2 3 1
    2 5 6
    2 2 3

    输出#1

    3
    3
    1

说明/提示

The tree in example is shown below.

After the query of the first type, the tree changes and is looking as shown below.

首页