有 n 个据点和 m 条单向虫洞。每条虫洞有可用和不可用两种状态,初始全部可用。 有四种操作: 1.摧毁一条虫洞; 2.摧毁一个据点的所有入边(从该据点出发的虫洞不受影响); 3.修复一条虫洞; 4.修复一个据点的所有入边。 每次操作后,判断是否满足:所有据点的可用出边恰好为 1 条。满足输出 YES,否则输出 NO。
第一行两个正整数 n, m(1 ≤ n, m ≤ 5 × 10⁵)。 接下来 m 行,每行两个整数 u, v(1 ≤ u, v ≤ n,u ≠ v),表示一条从 u 到 v 的虫洞。保证没有重边。 接下来一行一个正整数 q(1 ≤ q ≤ 5 × 10⁵),表示操作数。 接下来 q 行,每行表示一次操作,格式如下: 1 u v:摧毁虫洞 u → v,保证存在且可用; 2 u:摧毁据点 u 的所有入边,若无入边可用则无效果; 3 u v:修复虫洞 u → v,保证存在且不可用; 4 u:修复据点 u 的所有入边,若无入边损坏则无效果。
输出 q 行,每行 YES 或 NO,表示该操作后能否进行反攻。
3 6 2 3 2 1 1 2 1 3 3 1 3 2 11 1 3 2 1 2 3 1 1 3 1 1 2 3 1 3 3 3 2 2 3 1 3 1 3 1 3 4 2 1 3 2
NO NO YES NO YES NO NO NO YES NO NO
虫洞状态可参考图 图中的边表示存在且未被摧毁的虫洞:
