#1488. C1《云朵能量的差值契约》

C1《云朵能量的差值契约》

🧷 C1《云朵能量的差值契约》🔗

在兔猫信奥学院的“云朵能量实验室”,加菲老师给小兔和小猫展示了 nn 个“云朵能量罐”,编号 1..n1..n。 每个能量罐里真实的能量值是一个未知整数 EiE_i(可能为负,可能很大)。

实验记录员会不断写下两类记录:

  • 契约记录(type=1):声称 ExEy=dE_x - E_y = d
  • 询问记录(type=2):询问 ExEyE_x - E_y 的值;若无法确定,输出 UNKNOWN

但记录员有时会写错。为了保证实验室的数据可信:

  • 一条契约如果与之前所有被判定为真的契约矛盾,则它是一条假记录,并且不会被加入系统
  • 你的任务是:按顺序处理所有记录,回答每个询问,并统计假记录的条数。

输入格式

第一行两个整数 n,mn, m,表示能量罐数量与记录条数。

接下来 mm 行,每行是一条记录:

  • 1 x y d:声称 ExEy=dE_x - E_y = d
  • 2 x y:询问 ExEyE_x - E_y

输出格式

  • 对于每条询问 2 x y:输出一行

    • 若根据目前所有真契约可以唯一确定 ExEyE_x - E_y,输出该整数
    • 否则输出 UNKNOWN
  • 在所有记录处理结束后,额外输出一行一个整数:假契约的条数。


5 7
1 1 2 3
1 2 3 -1
2 1 3
1 1 3 5
2 4 5
1 4 5 10
2 5 4
2
UNKNOWN
-10
1

样例 1 解释

  • 前两条真契约推出 E1E3=(E1E2)+(E2E3)=3+(1)=2E_1-E_3=(E_1-E_2)+(E_2-E_3)=3+(-1)=2,所以第 3 条询问输出 2
  • 第 4 条声称 E1E3=5E_1-E_3=5 与已知 22 矛盾,是假契约(不加入)
  • 第 5 条询问时,4,54,5 还没有任何真契约关联,所以 UNKNOWN
  • 加入第 6 条真契约后,第 7 条询问 E5E4=10E_5-E_4=-10
  • 最后一行输出假契约总数 1

4 8
2 1 4
1 1 2 100
1 2 3 7
2 1 3
1 1 3 106
1 1 3 108
2 4 3
2 3 1
UNKNOWN
107
UNKNOWN
-107
1

数据范围

项目 范围
1n1000001 \le n \le 100000
1m2000001 \le m \le 200000
109d109-10^9 \le d \le 10^9
x,yx,y 保证在 1..n1..n

时间限制建议:2s~3s 空间限制建议:256MB~512MB