最新公告
  • 欢迎您光临信息学奥赛网,一个优质的信息学编程题库和信息学编程学习资源专业网站。欢迎加入VIP
  • [NOI2021] 轻重边

    正文概述 陈老师   2026-01-20 15:15:12  

    题目描述

    小 W 有一棵 nn 个结点的树,树上的每一条边可能是轻边或者重边。接下来你需要对树进行 mm 次操作,在所有操作开始前,树上所有边都是轻边。操作有以下两种:

    1. 给定两个点 aabb,首先对于 aabb 路径上的所有点 xx(包含 aabb),你要将与 xx 相连的所有边变为轻边。然后再将 aabb 路径上包含的所有边变为重边。
    2. 给定两个点 aabb,你需要计算当前 aabb 的路径上一共包含多少条重边。

    输入格式

    本题有多组数据,输入数据第一行一个正整数 TT,表示数据组数。对于每组数据:

    第一行包含两个整数 nnmm,其中 nn 表示结点数量,mm 表示操作数量。

    接下来 n1n - 1 行,每行包含两个整数 u vu\ v,表示树上的一条边。

    接下来 mm 行,每行包含三个整数 opi ai bi{\mathit{op}}_i\ a_i\ b_i,描述一个操作,其中 opi=1{\mathit{op}}_i = 1 表示第 11 类操作,opi=2{\mathit{op}}_i = 2 表示第 22 类操作。

    数据保证 aibia_i \neq b_i

    输出格式

    对于每一次第 22 类操作,输出一行一个整数表示答案。

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

    说明/提示

    【样例解释 #1】

    11 次操作后,重边有:(1,3)(1, 3)(3,6)(3, 6)(6,7)(6, 7)

    22 次操作,包含的重边有:(1,3)(1, 3)

    33 次操作,包含的重边有:(1,3)(1, 3)(3,6)(3, 6)(6,7)(6, 7)

    44 次操作,首先 (1,3)(1, 3)(3,6)(3, 6) 变为轻边,之后 (1,3)(1, 3)(3,5)(3, 5) 变为重边。

    55 次操作,包含的重边有:(1,3)(1, 3)(6,7)(6, 7)

    66 次操作,首先 (1,3)(1, 3) 变为轻边,之后 (1,2)(1, 2) 变为重边。

    77 次操作,包含的重边有:(6,7)(6, 7)

    【样例 #2】

    见附件 edge/edge2.inedge/edge2.ans

    该样例约束与测试点 363 \sim 6 一致。

    【样例 #3】

    见附件 edge/edge3.inedge/edge3.ans

    该样例约束与测试点 9109 \sim 10 一致。

    【样例 #4】

    见附件 edge/edge4.inedge/edge4.ans

    该样例约束与测试点 111411 \sim 14 一致。

    【样例 #5】

    见附件 edge/edge5.inedge/edge5.ans

    该样例约束与测试点 172017 \sim 20 一致。

    【数据范围】

    对于所有测试数据:T3T \le 31n,m1051 \le n, m \le {10}^5

    测试点编号 n,mn, m \le 特殊性质
    121 \sim 2 1010
    363 \sim 6 50005000
    787 \sim 8 105{10}^5 A,B
    9109 \sim 10 A
    111411 \sim 14 B
    151615 \sim 16 2×1042\times {10}^4
    172017 \sim 20 105{10}^5

    特殊性质 A:树的形态是一条链。

    特殊性质 B:第 22 类操作给出的 aia_ibib_i 之间有边直接相连。

    信息学奥赛网,一个优质的信息学奥赛学习资源平台!
    信息学奥赛网 » [NOI2021] 轻重边