AT_agc077_c [AGC077C] Reverse and DAG
题目描述
给定一个有 $N$ 个顶点、$M$ 条边的简单有向图 $G$,顶点编号为 $1$ 到 $N$,第 $i$ 条边从顶点 $a_i$ 指向顶点 $b_i$。保证对于任意 $i \neq j$,都有 $(a_i,b_i) \neq (b_j,a_j)$。另外,给定一个整数 $K$,其中 $2 \leq K \leq N-2$。
你可以进行如下操作任意次(也可以不进行):
- 选择一个大小为 $K$ 的顶点子集 $S \subset \{1,\ldots,N\}$。对于所有两端点编号都在 $S$ 中的有向边,反转该边的方向。
- 即,若存在一条从 $u$ 到 $v$ 的边($u,v \in S$),将其删除,同时加入一条从 $v$ 到 $u$ 的有向边。所有符合条件的边会同时进行此操作。
问是否可以通过若干次这样的操作(包括零次),将 $G$ 变成一个没有有向环的图(DAG)。
共给出 $T$ 组测试数据,请分别作答。
输入格式
输入按如下格式从标准输入读入:
> $T$ $\mathrm{case}_1$ $\mathrm{case}_2$ $\vdots$ $\mathrm{case}_T$
每组测试数据格式如下:
> $N$ $M$ $K$ $a_1$ $b_1$ $a_2$ $b_2$ $\vdots$ $a_M$ $b_M$
输出格式
请按顺序输出第 $1$、$2$、…、$T$ 个测试数据的答案。
对于每组测试数据,若可以通过若干次操作使 $G$ 变为无环有向图,输出 `Yes`,否则输出 `No`。
说明/提示
### 样例解释 1
对于第一组数据,可以通过如下两步操作使 $G$ 变为无环图:
- 第一步,选择 $S = \{1,2,7\}$,此时两端都属于 $S$ 的有向边为 $1 \to 2$ 和 $7 \to 1$,这两条边方向被反转。
- 第二步,选择 $S = \{4,5,7\}$,此时 $4 \to 5$ 是唯一一条两端在 $S$ 的有向边,方向反转,$G$ 变为无环有向图。
对于第二组数据,无论如何操作,都无法将 $G$ 变为无环有向图。
### 数据范围
- $1 \leq T \leq 50000$
- $4 \leq N \leq 2\times 10^5$
- $0 \leq M \leq \min(N(N-1), 2\times 10^5)$
- $2 \leq K \leq N-2$
- $1 \leq a_i, b_i \leq N$
- $a_i \neq b_i$
- $i \neq j$ 时,$(a_i, b_i) \neq (a_j, b_j)$ 且 $(a_i, b_i) \neq (b_j, a_j)$。
- 所有测试数据中 $N$ 的总和不超过 $2\times 10^5$。
- 所有测试数据中 $M$ 的总和不超过 $2\times 10^5$。
- 所有输入均为整数。
由 ChatGPT 5 翻译