#P12562. [UTS 2024] Two Trees

[UTS 2024] Two Trees

题目描述

给定两棵相同的无向树 GG 和 HH,每棵树包含 nn 个顶点。两棵树被称为相同,当且仅当对于所有顶点对 (u,v)(u,v),GG 中存在边 (Gu,Gv)(G_u,G_v) 当且仅当 HH 中存在边 (Hu,Hv)(H_u,H_v)。

某些顶点可以通过无向边连接到另一棵树中的对应顶点。特别地,叶子顶点 GvG_v 可以直接连接到顶点 HvH_v。如果叶子顶点 GvG_v 直接连接到 HvH_v,则称顶点 vv 为启用状态,否则为禁用状态。

初始时,所有叶子顶点均为禁用状态。需要处理以下两种查询:

  1. 11 vv —— 切换顶点 vv 的状态(若当前为禁用则改为启用,反之亦然);
  2. 22 uu vv —— 输出从顶点 GuG_u 到顶点 HvH_v 的最短路径长度。

输入格式

第一行包含两个整数 nn 和 qq (3≤n≤2⋅1053 \le n \le 2 \cdot 10^5; 1≤q≤2⋅1051 \le q \le 2 \cdot 10^5) —— 分别表示顶点数和查询数。

接下来 n−1n-1 行,每行包含两个整数 uu, vv (1≤u,v≤n)(1 \le u,v \le n) —— 描述树的边 (Gu,Gv)(G_u,G_v) 和 (Hu,Hv)(H_u,H_v)。

接下来 qq 行,每行描述一个查询。查询有两种形式:

  • 11 vv (1≤v≤n)(1 \le v \le n) —— 切换顶点 vv 的状态;
  • 22 uu vv (1≤u,v≤n)(1 \le u,v \le n) —— 查询从 GuG_u 到 HvH_v 的最短路径长度。

输出格式

对于每个第二类查询,输出一个整数表示最短路径长度。若路径不存在,输出 -1\texttt{-1}。

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

提示

设 kk 为第二类查询的数量。

  • (33 分):n≤16n \le 16,q≤16q \le 16;
  • (33 分):n≤16n \le 16,q≤2⋅105q \le 2 \cdot 10^5;
  • (22 分):n≤2000n \le 2000,q≤2⋅105q \le 2 \cdot 10^5,k≤5k \le 5;
  • (88 分):n≤2000n \le 2000,q≤2000q \le 2000;
  • (99 分):n≤2⋅105n \le 2 \cdot 10^5,q≤2⋅105q \le 2 \cdot 10^5,k≤5k \le 5;
  • (3030 分):n≤2⋅105n \le 2 \cdot 10^5,q≤2⋅105q \le 2 \cdot 10^5,且第二类查询后不会出现第一类查询;
  • (4545 分):无额外限制。

翻译由 DeepSeek V3 完成