#P15665. [ICPC 2025 Jakarta R] Travelling Taro Trains

[ICPC 2025 Jakarta R] Travelling Taro Trains

题目描述

太郎正在一个国家旅行,该国家由编号为 11 到 NN 的 NN 个城市组成。国内还有 KK 家铁路公司,编号为 11 到 KK,负责运营火车。初始时,有 MM 条单向火车线路,每条线路可以用一个三元组 (u,v,k)(u, v, k) 描述,表示存在由公司 kk 运营的从城市 uu 开往城市 vv 的火车。

太郎当前位于城市 11。在接下来的 QQ 个月中,可能会发生以下三种事件之一。

  • 1 u v k\texttt{1 u v k}:公司 kk 开通一条从城市 uu 到城市 vv 的新火车线路。换句话说,将 (u,v,k)(u, v, k) 加入铁路网络。
  • 2 u v k\texttt{2 u v k}:公司 kk 停运其从城市 uu 到城市 vv 的火车线路。换句话说,从铁路网络中移除 (u,v,k)(u, v, k)。
  • 3 k\texttt{3 k}:太郎可以选择停留在他当前所在的城市,或者乘坐一趟由公司 kk 运营的、从他当前所在城市开往另一个城市的火车。

题目保证在整个事件过程中,现有的线路 (u,v,k)(u, v, k) 始终互不相同,且事件 22 总是移除一条当前存在的线路。

每当事件 33 发生时,根据到目前为止的事件过程,求太郎可能位于的不同城市的数量。

输入格式

第一行包含四个整数 NN、MM、KK 和 QQ(2≤N≤300  0002 \le N \le 300\;000;1≤M,K,Q≤300  0001 \le M, K, Q \le 300\;000)。

接下来的 MM 行,每行包含三个整数 uu、vv、kk(1≤u,v≤N1 \leq u, v \leq N;1≤k≤K1 \leq k \leq K;u≠vu \neq v),描述初始的火车线路。

接下来的 QQ 行,每行描述一个如上所述的事件。

输入保证在整个事件过程中,现有的线路 (u,v,k)(u, v, k) 始终互不相同。

输出格式

对于每个事件 33,输出一行,表示太郎可能位于的不同城市的数量。

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

提示

样例 1 解释: 初始时,太郎位于城市 11。

  • 在第一个事件 33 中,没有从城市 11 出发、由公司 22 运营的火车线路,因此太郎必须停留在城市 11。
  • 在第二个事件 33 中,太郎可以选择停留在城市 11,或者乘坐线路 (1,3,1)(1, 3, 1) 到达城市 33。因为太郎可能位于城市 11 或 33,所以输出 22。
  • 在第三个事件 33 中,现有的火车线路为 (1,3,1)(1, 3, 1)、(1,4,2)(1, 4, 2)、(3,2,2)(3, 2, 2)、(3,5,2)(3, 5, 2)。如果太郎当前在城市 11,他可以乘坐线路 (1,4,2)(1, 4, 2) 到达城市 44。如果太郎当前在城市 33,他可以乘坐线路 (3,2,2)(3, 2, 2) 或 (3,5,2)(3, 5, 2) 分别到达城市 22 或 55。由于他可能位于城市 11、22、33、44 和 55,因此输出 55。

翻译由 DeepSeek V3.2 完成