题目名称 1322. [ZJOI 2012] 网络
输入输出 networkzj.in/out
难度等级 ★★★
时间限制 3000 ms (3 s)
内存限制 128 MiB
测试数据 10
题目来源 GravatarQhelDIV 于2013-03-27加入
开放分组 全部用户
提交状态
分类标签
动态树 LCT
分享题解
通过:27, 提交:84, 通过率:32.14%
Gravatar徐心雨 100 2.285 s 2.77 MiB C++
Gravatargls1196 100 2.288 s 3.37 MiB C++
Gravataronlysky 100 2.288 s 4.36 MiB C++
Gravatarkakakaka 100 2.436 s 6.07 MiB C++
GravatarFoolMike 100 2.501 s 7.63 MiB C++
Gravataryyb 100 2.583 s 3.63 MiB C++
GravatarMayuri 100 2.633 s 5.62 MiB C++
Gravatarppp 100 2.678 s 2.99 MiB C++
Gravatar冬凌 100 2.710 s 4.95 MiB C++
GravatarRivendell 100 3.104 s 4.97 MiB C++
关于 网络 的近10条评论(全部评论)
连个LCT都写不对,真是身败名裂……
数据中存在把边的颜色改成当前颜色的操作,写题同学请留意。
一个点同色的边至多2条,这意思是只可能是链吗?splay应该就行了,不过还是觉得LCT好些一些。
GravatarFoolMike
2017-05-11 08:24 1楼

1322. [ZJOI 2012] 网络

★★★   输入文件:networkzj.in   输出文件:networkzj.out   简单对比
时间限制:3 s   内存限制:128 MiB

Description


有一个无向图G,每个点有个权值,每条边有一个颜色。这个无向图满足以下两个条件:

1. 对于任意节点连出去的边中,相同颜色的边不超过两条。

2. 图中不存在同色的环,同色的环指相同颜色的边构成的环。

在这个图上,你要支持以下三种操作:

0. 修改一个节点的权值。

1. 修改一条边的颜色。

2. 查询由颜色c的边构成的图中,所有可能在节点u到节点v之间的简单路径上的节点的权值的最大值。

Input


第一行包含四个正整数N, M, C, K,其中N为节点个数,M为边数,C为边的颜色数,K为操作数。

接下来N行,每行一个正整数vi,为节点i的权值。

之后M行,每行三个正整数u, v, w,为一条连接节点u和节点v的边,颜色为w。满足1 ≤ u, v ≤ N,0 ≤ w < C,保证u ≠ v,且任意两个节点之间最多存在一条边(无论颜色)。

最后K行,每行表示一个操作。每行的第一个整数k表示操作类型。

0. k = 0为修改节点权值操作,之后两个正整数x和y,表示将节点x的权值vx修改为y。

1. k = 1为修改边的颜色操作,之后三个正整数u, v和w,表示将连接节点u和节点v的边的颜色修改为颜色w。满足0 ≤ w < C。

2. k = 2为查询操作,之后三个正整数c, u和v,表示查询所有可能在节点u到节点v之间的由颜色c构成的简单路径上的节点的权值的最大值。如果不存在u和v之间不存在由颜色c构成的路径,那么输出“-1”。

Output


包含若干行,每行输出一个对应的信息。

1. 对于修改节点权值操作,不需要输出信息。

2. 对于修改边的颜色操作,按以下几类输出:

a) 若不存在连接节点u和节点v的边,输出“No such edge.”。

b) 若修改后不满足条件1,不修改边的颜色,并输出“Error 1.”。

c) 若修改后不满足条件2,不修改边的颜色,并输出“Error 2.”。

d) 其他情况,成功修改边的颜色,并输出“Success.”。

输出满足条件的第一条信息即可,即若同时满足b和c,则只需要输出“Error 1.”。

3. 对于查询操作,直接输出一个整数。 第 5

Sample Input


4 5 2 7

1

2

3

4

1 2 0

1 3 1

2 3 0

2 4 1

3 4 0

2 0 1 4

1 1 2 1

1 4 3 1

2 0 1 4

1 2 3 1

0 2 5

2 1 1 4

Sample Output


4

Success.

Error 2.

-1

Error 1.

5

HINT


【数据规模】

对于30%的数据:N ≤ 1000,M ≤ 10000,C ≤ 10,K ≤ 1000。

另有20%的数据:N ≤ 10000,M ≤ 100000,C = 1,K ≤ 100000。

对于100%的数据:N ≤ 10000,M ≤ 100000,C ≤ 10,K ≤ 100000。