#graph103. 最大半连通子图

最大半连通子图

最大半连通子图

题目来源

ZJOI2007

题目描述

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

若G′=(V′,E′)G'=(V',E')满足V′⊂VV'\subset V,E′E'是EE中所有跟V′V'有关的边,则称G′G'是GG的一个导出子图。若G′G'是GG的导出子图,且G′G'半连通,则称G′G'为GG的半连通子图。

若G′G'是GG所有半连通子图中包含节点数最多的,则称G′G'是GG的最大半连通子图。给定一个有向图GG,请求出GG的最大半连通子图拥有的节点数KK,以及不同的最大半连通子图的数目CC。由于CC可能比较大,仅要求输出CC对XX的余数。

输入格式

第一行包含三个整数N,M,XN, M, X。N,MN, M分别表示图GG的点数与边数,XX的意义如上文所述。

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

保证输入中没有重边,N≤105,M≤106,X≤108N \leq 10^5, M \leq 10^6, X \leq 10^8。

输出格式

一共两行,第一行包含一个整数KK,第二行包含整数C mod XC \bmod X。

样例输入

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

样例输出

3
3