#528. 拯救小猪

拯救小猪

拯救小猪

输入文件:help.inhelp.in

输出文件:help.outhelp.out

时间限制:2s2s

空间限制:512MB512MB

题目背景

今天,恶龙又把小猪们抓进了自己的猪棚。piggypiggy作为知名的猪猪侠,准备拯救小猪

题目描述

可恨的恶龙将小猪们放入了nn个猪棚,第ii个猪棚有tit_i头小猪,每个猪棚都被上了锁,猪棚xx如果被打开,那么猪棚xx里面的猪,就会为了保命,到处乱跑,可能跑到能到达的已被打开的猪棚

聪明的piggypiggy,与恶龙斗智斗勇,qq条战斗记录如下:

初始所有的小猪都放在第11

11 pip_i mim_i:这是一次拯救,piggypiggy会拯救猪棚pip_i中不超过mim_i头小猪,若猪棚pip_i未被打开,则piggypiggy会在临走前,打开猪棚pip_i

22 cic_i:这是一次破坏,恶龙会把当前未被打开的猪棚全部放到层数cic_i

33 aia_i bib_i:这是一次建造,piggypiggy会在第aia_i层与第bib_i层间建立秘密通道,使得第aia_i层和第bib_i层之间能够互相到达

注意:1.同一层猪棚能够相互到达;不同层之间能够互相到达,当且仅当存在一条秘密管道路径

2.数据不保证aibia_i \ne b_i

不过,piggypiggy根本不知道每次拯救,最多能拯救多少头小猪,你能帮帮piggypiggy嘛?

输入描述

第一行,共两个整数nnqq

第二行,共nn个整数tit_i

接下来qq行,每行若干个整数

第一个整数opop

op=1op = 1,接下来两个整数pip_imim_i

op=2op = 2,接下来一个整数cic_i

op=3op = 3,接下来两个整数aia_ibib_i

输出描述

每行一个整数表示每次拯救最多能拯救多少头小猪

样例输入

5 8
1 2 3 4 5
1 1 2
1 2 1
1 3 1
2 3
3 1 3
1 5 2
2 2
1 5 5

样例输出

1
1
1
2
5

数据范围

20pts20pts:n,q,ti,pi,mi,ci,ai,bi100n,q,t_i,p_i,m_i,c_i,a_i,b_i \leq 100

50pts:n,q,ti,pi,mi,ci,ai,bi100050pts:n,q,t_i,p_i,m_i,c_i,a_i,b_i \leq 1000

100pts:100pts:n,q,ti,mi,pi,ci,ai,bi3105n,q,t_i,m_i,p_i,c_i,a_i,b_i \leq 3*10^5

所有数据保证 cinc_i \leq n

对于100pts100pts的数据范围中,有20pts20pts的数据满足没有op=2,3op = 2,3操作