QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 512 MB 満点: 100 ハック可能 ✓

#13283. 强连通分量反击战

統計

如果一个有向图中存在从 $u$ 到 $v$ 的路径,且存在从 $v$ 到 $u$ 的路径,则称顶点 $u$ 和 $v$ 是强连通的。注意,如果 $u$ 和 $v$ 强连通,且 $v$ 和 $w$ 强连通,那么 $u$ 和 $w$ 也强连通。因此,图的顶点被划分为若干个集合——强连通分量。属于同一个强连通分量的顶点与该分量内的所有顶点(包括自身)强连通,且与分量外的任何顶点都不强连通。

在图论课上,Alice 在黑板上画了一个有 $n$ 个顶点的有向图,并标出了它的强连通分量。课间休息时,Bob 决定捉弄一下 Alice,擦掉了图中一些边的方向。他希望 Alice 能根据剩余的边以及休息后强连通分量的划分,唯一地恢复出被擦掉的方向。

请帮助 Bob 确定他最多可以擦掉图中多少条边的方向,以及他有多少种方法可以做到这一点。

更正式地说,找到一个边子集 $A$ 的最大大小,使其满足以下性质:如果擦掉集合 $A$ 中边的方向,那么根据关于旧强连通分量的信息以及不在集合 $A$ 中的边的方向,集合 $A$ 中边的方向可以被唯一地恢复,且强连通分量保持不变。

由于此类最大子集的数量可能非常大,请输出其对 $10^9 + 7$ 取模的结果。

能够正确确定集合 $A$ 的最大大小,但无法正确给出此类子集数量的解法将获得部分分数。

输入格式

第一行包含三个整数 $n, m$ 和 $g$ ($2 \le n \le 2000, 1 \le m \le 2000, 0 \le g \le 7$),分别表示图中的顶点数、边数以及测试组号。

接下来的 $m$ 行,每行包含两个整数 $u_i$ 和 $v_i$ ($1 \le u_i, v_i \le n, u_i \neq v_i$),表示第 $i$ 条边的起点和终点。

保证对于任意 $1 \le i, j \le n$,$(u_i, v_i) \neq (u_j, v_j)$ 且 $(u_i, v_i) \neq (v_j, u_j)$,这意味着任意两个顶点之间最多只有一条边,不考虑方向。

输出格式

第一行输出一个数字,表示可以擦掉方向的边的最大子集的大小。

第二行输出一个数字,表示此类子集的数量对 $10^9 + 7$ 取模的结果。如果你不想提供此类子集的数量,则在第二行输出一个 $1$ 到 $10^9 + 6$ 之间的任意数字。在这种情况下,你的解法将获得该测试点的部分分数。

注意,如果在第二行省略任何数字,将导致该测试点被判为“Wrong Answer”并获得零分,无论子集大小是否正确。

样例

样例输入 1

5 6 0
1 2
1 5
2 3
3 4
3 5
4 2

样例输出 1

3
3

说明

样例中图的强连通分量高亮显示如下:

虚线边的方向可以被移除。事实上,边 $(1, 5)$ 不能被反向,否则顶点 $1, 2, 3$ 和 $5$ 将属于同一个强连通分量。边 $(3, 4)$ 和 $(4, 2)$ 也不能被改变方向,否则顶点 $2, 3$ 和 $4$ 将不再属于同一个强连通分量。

现在,考虑一种选择边子集的错误方式:

这里,粗虚线边的方向不能被移除。例如,如果我们反转边 $(1, 2)$ 和 $(1, 5)$ 的方向,我们得到的图具有相同的强连通分量分解。

可以证明,恰好有 $4$ 条边的方向不能被移除,因此答案是 $3$。

子任务

组别 部分分 满分 $n$ $m$ 所需组别 说明
0 0 0 - - - 样例
1 7 11 $n \le 14$ $m \le 14$ 0
2 5 9 $n \le 20$ $m \le 20$ 0, 1
3 8 12 - - - $u_i < v_i$,对于所有 $1 \le i \le n-1$ 存在边 $(i, i+1)$
4 8 13 - - 3 $u_i < v_i$
5 12 20 - - - 对于所有 $1 \le i \le n-1$ 存在边 $(i, i+1)$,存在边 $(n, 1)$
6 13 21 - - 5 图由一个强连通分量组成
7 8 14 - - 0–6

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.