题目大意
初始有一个长度为 \(n\) 的数组 \(a\)。之后进行 \(q\) 次操作,每次操作 \(i\) 由 \(x_i\),\(y_i\),\(z_i\) 三个数描述,表示将 \(a_{z_i}\) 的值设置为 \(min\{a_{x_i},a_{y_i}\}\)。给定完成所有操作后的最终的数组 \(a\),求进行操作前的数组 \(a\)。
很容易想到正难则反的方向。
倒序考虑每一个操作,对于操作 \(i\),\(a_{x_i}=max\{a_{x_i},a_{z_i}\}\),\(a_{y_i}=max\{a_{y_i},a_{z_i}\}\),这样就可以保证正序执行操作完后的 \(a_{z_i}\leq min\{a_{x_i},a_{y_i}\}\)。然后再 \(a_{z_i}=0\),因为进过这一次操作 \(a_{z_i}\) 原始值已被覆盖。
最后在求出的 \(a\) 数组上正序执行一下操作,如果得到的数组与输入的相同即可,否则无解。