「一本通 3.5 例 2」最大半连通子图

「一本通 3.5 例 2」最大半连通子图

题目描述

原题来自:ZJOI 2007

一个有向图 \(G = (V,E)\) 称为半连通的 (Semi-Connected),如果满足:\(\forall u,v\in V\),满足 \(u\to v\) 或 \(v\to u\),即对于图中任意两点 \(u,v\),存在一条 \(u\) 到 \(v\) 的有向路径或者从 \(v\) 到 \(u\) 的有向路径。

若 \(G'=(V',E')\) 满足,\(E’\) 是 \(E\) 中所有和 \(V’\) 有关的边,则称 \(G’\) 是 \(G\) 的一个导出子图。若 \(G’\) 是 \(G\) 的导出子图,且 \(G’\) 半连通,则称 \(G’\) 为 \(G\) 的半连通子图。若 \(G’\) 是 \(G\) 所有半连通子图中包含节点数最多的,则称 \(G’\) 是 \(G\) 的最大半连通子图。

给定一个有向图 \(G\),请求出 \(G\) 的最大半连通子图拥有的节点数 \(K\),以及不同的最大半连通子图的数目 \(C\)。由于 \(C\) 可能比较大,仅要求输出 \(C\) 对 \(X\) 的余数。

输入格式

第一行包含三个整数 \(N,M,X\)。\(N,M\) 分别表示图 \(G\) 的点数与边数,\(X\) 的意义如上文所述;

接下来 \(M\) 行,每行两个正整数 \(a, b\),表示一条有向边 \((a, b)\)。

图中的每个点将编号为 \(1,2,3,\cdots ,N\),保证输入中同一个 \((a,b)\) 不会出现两次。

输出格式

应包含两行。第一行包含一个整数 \(K\),第二行包含整数 \(C \bmod X\)。

样例数据

样例输入

6 6 20070603
1 2
2 1
1 3
2 4
5 6
6 4

样例输出

3
3

限制与提示

对于 \(20\%\) 的数据,\(N \le 18\);

对于 \(60\%\) 的数据,\(N \le 10^4\);

对于 \(100\%\) 的数据,\(1\le N \le 10^5,1\le M \le 10^6,X\le 10^8\)。

信息

难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者

相关

在下列训练计划中:

信息学奥赛一本通提高篇-题库