luogu#P5168. xtq玩魔塔

xtq玩魔塔

题目背景

已添加样例解释

在小学五年级的时候,xtqxtq迷上了各种奇奇怪怪的魔塔。 关于魔塔游戏的背景:https://baike.baidu.com/item/魔塔/861619?fr=aladdin

对于题意理解可能并没有任何微小的作用

题目描述

xtqxtq现在正在玩一个魔塔。这个魔塔十分特殊,不是由正方形格子构成的,而是一个nn个点,mm条边的无向图,而且每条边上都会有一个怪物。xtqxtq经过了重重阻拦,现在到达了一个奖励层。

在这层内,所有怪物都不会让xtqxtq掉血,但是对于每一个怪物如果xtqxtq不到一定血量他就无法攻击这个怪物。每一个点上还有一个宝石,宝石的种类有很多,但是如果xtqxtq到了一个点但是他已经拥有了这种宝石,他是不能捡起的。他现在想要知道从这个魔塔的一个点到另一个点所需要的最小血量是多少,还要知道如果他从一个点到达这个魔塔,以某个血量能够捡到的宝石数量是多少。还有一件事令xtqxtq十分头疼:这个魔塔由于一些神秘的力量,可能宝石的种类会发生变化。保证如果xtqxtq的血量无穷大,他就可以走到这一层的任何地方。

输入格式

第一行三个数n,m,qn,m,q代表点数,边数和操作数量

第二行n个数,代表每个点上宝石的种类

下面m行每行三个数u,v,tu,v,t,代表uuvv之间有一条路,路上有一个需要tt点血量才能击杀的怪物

然后q行每行三个数opt,x,yopt,x,y

opt=1opt=1时将xx点的宝石改成第yy

opt=2opt=2代表查询从xx点要到达yy点所需的最小血量

opt=3opt=3代表查询从xx点到达魔塔,血量为yy能捡到多少宝石

输出格式

对于每一个22操作和33操作,输出一行答案

4 4 4
4 6 4 2
1 2 8
3 2 3
2 4 2
4 1 7
3 4 3
1 4 4
3 1 7
2 4 3
3
2
3

提示

样例解释:

第一次操作为3号操作,从4开始,有3点血量,可以到达{2,3,4}\{2,3,4\},可以获得的宝石种类为{2,4,6}\{2,4,6\}

第二次将1的宝石种类修改为4,即下图:

第三次为3操作,从1开始,可以到达的点为{1,2,3,4}\{1,2,3,4\},可以获得的宝石种类为{4,6}\{4,6\}

第四次为2操作,从4走到3,至少需要3点血量。

测试点 n m q 有无修改操作
1 10 20 10
2 1000 5000
3
4 8000 30000 20000
5
6 20000 100000
7
8 50000 200000 200000
9
10 100000 300000

对于100%100\%的数据,n100000,m300000,q200000n \le 100000,m \le 300000,q \le 200000

剩余所有数字intmax\le intmax

保证查询的区间是随机生成的(其实是出题人懒得再写generator了)