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

[ICPC 2025 Jakarta R] Travelling Taro Trains

说明

太郎正在一个国家旅行,该国家由编号为 11NNNN 个城市组成。国内还有 KK 家铁路公司,编号为 11KK,负责运营火车。初始时,有 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 发生时,根据到目前为止的事件过程,求太郎可能位于的不同城市的数量。

输入格式

第一行包含四个整数 NNMMKKQQ2N300  0002 \le N \le 300\;0001M,K,Q300  0001 \le M, K, Q \le 300\;000)。

接下来的 MM 行,每行包含三个整数 uuvvkk1u,vN1 \leq u, v \leq N1kK1 \leq k \leq Kuvu \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。因为太郎可能位于城市 1133,所以输出 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) 分别到达城市 2255。由于他可能位于城市 1122334455,因此输出 55

翻译由 DeepSeek V3.2 完成