#P8819. [CSP-S 2022] 星战

[CSP-S 2022] 星战

[CSP-S 2022] 星战

  • 时间限制:2 秒
  • 内存限制:512 MiB

题目描述

在宇宙中有 nn 个据点和 mm 条单向虫洞。虫洞 (u,v)(u,v) 从据点 uu 指向据点 vv,不存在自环,也不存在重边。初始时所有虫洞均可用。

战场上会依次发生 qq 次操作:

  1. 摧毁一条指定的、当前可用的虫洞;
  2. 摧毁所有终点为指定据点的当前可用虫洞;
  3. 修复一条指定的、当前不可用的虫洞;
  4. 修复所有终点为指定据点的当前不可用虫洞。

摧毁只会让虫洞暂时不可用,不会删除虫洞。第 2、4 类操作可能没有实际效果。

一次操作后,如果从任意据点出发都能沿可用虫洞无限穿梭,并且每个据点恰好只有一条可用的出边,就称当前可以进行反攻。

请在每次操作后判断当前是否可以反攻。

输入格式

第一行包含两个正整数 n,mn,m

接下来 mm 行,每行两个整数 u,vu,v,表示一条从 uu 指向 vv 的虫洞。保证 uvu\ne v,且不存在两条相同虫洞。

接下来一行包含正整数 qq

接下来 qq 行,每行描述一次操作:

  • 1 u v:摧毁虫洞 (u,v)(u,v)。保证该虫洞存在且当前可用;
  • 2 u:摧毁所有终点为 uu 的当前可用虫洞;
  • 3 u v:修复虫洞 (u,v)(u,v)。保证该虫洞存在且当前不可用;
  • 4 u:修复所有终点为 uu 的当前不可用虫洞。

输出格式

输出 qq 行。每次操作后,如果当前可以反攻,输出 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

样例说明

下图展示了样例操作过程中可用虫洞的变化,其中有向边表示当前可用的虫洞。

样例过程示意图

数据范围

对于所有数据:

  • 1n,m,q5×1051\le n,m,q\le 5\times 10^5
  • 所有虫洞端点均在 [1,n][1,n] 内;
  • 输入操作满足上文所述合法性条件。

本题采用独立计分点,各子任务内所有测试点等分。

子任务编号 分值 特殊限制
1 20 n60n\le 60m120m\le 120q120q\le 120
2 40 n2000n\le 2000m4000m\le 4000q2000q\le 2000
3 无特殊限制