拯救小猪
输入文件:help.in
输出文件:help.out
时间限制:2s
空间限制:512MB
题目背景
今天,恶龙又把小猪们抓进了自己的猪棚。piggy作为知名的猪猪侠,准备拯救小猪
题目描述
可恨的恶龙将小猪们放入了n个猪棚,第i个猪棚有ti头小猪,每个猪棚都被上了锁,猪棚x如果被打开,那么猪棚x里面的猪,就会为了保命,到处乱跑,可能跑到能到达的已被打开的猪棚。
聪明的piggy,与恶龙斗智斗勇,q条战斗记录如下:
初始所有的小猪都放在第1层
1 pi mi:这是一次拯救,piggy会拯救猪棚pi中不超过mi头小猪,若猪棚pi未被打开,则piggy会在临走前,打开猪棚pi
2 ci:这是一次破坏,恶龙会把当前未被打开的猪棚全部放到层数ci
3 ai bi:这是一次建造,piggy会在第ai层与第bi层间建立秘密通道,使得第ai层和第bi层之间能够互相到达
注意:1.同一层猪棚能够相互到达;不同层之间能够互相到达,当且仅当存在一条秘密管道路径
2.数据不保证ai=bi
不过,piggy根本不知道每次拯救,最多能拯救多少头小猪,你能帮帮piggy嘛?
输入描述
第一行,共两个整数n,q
第二行,共n个整数ti
接下来q行,每行若干个整数
第一个整数op,
op=1,接下来两个整数pi,mi
op=2,接下来一个整数ci
op=3,接下来两个整数ai,bi
输出描述
每行一个整数表示每次拯救最多能拯救多少头小猪
样例输入
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
数据范围
20pts:n,q,ti,pi,mi,ci,ai,bi≤100
50pts:n,q,ti,pi,mi,ci,ai,bi≤1000
100pts:n,q,ti,mi,pi,ci,ai,bi≤3∗105
所有数据保证 ci≤n
对于100pts的数据范围中,有20pts的数据满足没有op=2,3操作