#HK5174. 「POI2020 IOI Selection」Tunele czasoprzestrzenne

「POI2020 IOI Selection」Tunele czasoprzestrzenne

题目描述

题目译自 XXVII Olimpiada Informatyczna – Eliminacje do IOI Tunele czasoprzestrzenne

由于 Bajtazar 教授在量子拜托力学方面的革命性发现以及 Bajton Musk 的工程创新,拜托西亚星系成为可观测宇宙中首个开始建造时空隧道的地方。

每个隧道从一个星球通往另一个星球(单向的)。如果我们在时间 tt 从起点星球 aa 进入隧道,那么我们将在时间 t+ct+c 到达目标星球 bb。这一想法中最具革命性的是,cc 不仅可以非常小(即允许在短时间内进行长距离旅行),甚至可以是负数(即在目标星球的时间可能早于从起点星球出发的时间)。

拜托西亚星系政府对此深感担忧,他们担心这些发现可能被用来建造时间机器,即允许回到过去的时间点,这不仅违背常识,还威胁到整个星系的安全。因此,必须持续监控隧道系统,以防止时间机器的出现。换句话说,每次建造或摧毁隧道后,都需要判断是否存在一系列隧道,从某个星球出发并回到该星球,且回到时的时间早于出发时间。

输入格式

输入数据的第一行包含两个整数 nnqq,分别表示星系中的星球数量和查询次数。星球编号从 11nn

接下来的 qq 行描述查询;第 ii 行包含以下两种查询之一:

  • B a b c\texttt{B}\ a\ b\ c:提议建造一条从星球 aa 到星球 bb 的隧道,旅行时间为 cc (1a,bn,105c105)(1 \leq a, b \leq n, -10^{5} \leq c \leq 10^{5})
  • Z j\texttt{Z}\ j:提议摧毁在第 jj (1ji)(1 \leq j \leq i) 次查询中建造的隧道 。

输出格式

你的程序应输出 qq 行;第 ii 行应为 TAKNIE,表示在执行从第一次到第 ii 次(包含第 ii 次)所有提议后,是否可以通过已建造的隧道构建时间机器。

4 6
B 1 2 3
B 3 1 -4
B 2 3 2
B 2 3 0
Z 1
B 1 3 3

NIE
NIE
NIE
TAK
NIE
TAK

附加样例

  1. n=10n=10q=20q=20,建造的(并立即摧毁)仅为循环,即每次 B 类型查询中 a=ba=b
  2. n=300n=300q=300q=300,只有 B\texttt{B} 类型查询,始终 c=1c=-1,构建包含所有星球的循环;
  3. n=1000n=1000q=3000q=3000,构建如第二个样例的循环。完成后添加 500500 个随机隧道,然后按逆序摧毁所有隧道。

数据范围与提示

在所有子任务中,均满足 2n20002 \leq n \leq 20001q40001 \leq q \leq 4000。详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 1515 n300n \leq 300q600q \leq 600
22 1515 只有 B 类型查询
33 4040 每次 B 类型查询答案为 TAK 后,下一次查询为 Z,摧毁最近建造的隧道
44 3030 无附加限制