luogu#P11508. [ROIR 2017] 数据存放 (Day 1)

[ROIR 2017] 数据存放 (Day 1)

题目背景

翻译自 ROIR 2017 D1T3

题目描述

一家公司大型的电信网络包含了 nn 台服务器,编号从 11nn。其中,有一些服务器对之间通过双向通信通道连接,共有 mm 个通道。保证该网络中的服务器通过这些通道可以相互通信。

我们称一个服务器集合 AA 被称为“容错集合”,当且仅当在任意一条通道失效的情况下,满足以下条件:

  • 对于任何不属于集合 AA 的服务器 XX,总能通过剩下的通道将数据从集合 AA 中的某一台服务器传输到服务器 XX

下图显示了一个网络和一个容错集合 A={1,4}A=\{1,4\}

  • 对于服务器 22,当服务器 1122 之间的通道失效时,可以从服务器 44 传输数据;当服务器 2233 之间的通道失效时,可以从服务器 11 传输数据。当其它通道失效时,两个服务器都可以向其传输数据。
  • 对于服务器 3355,当任何通道失效时,可以通过其它通道从服务器 44 传输数据。

公司的开发团队需要将他们的数据存放在这个网络中。为了提高数据的可用性和容错性,开发者希望将数据备份存储在多个服务器上,这些服务器需要形成一个容错集合。为了最小化开销,需要选择包含的服务器数量最少的容错集合。此外,为了了解网络的灵活性,还需要计算选择这个容错集合的不同方式的数量,由于这个数量可能很大,你只需要输出这个数对 109+710^9 + 7 取模的结果。

输入格式

第一行输入两个整数 nnmm,分别表示服务器的数量和通信通道的数量(2n2000002 \leq n \leq 2000001m2000001 \leq m \leq 200000)。

接下来 mm 行,每行包含两个整数,表示一个通信通道连接的两个服务器。

输入保证:

  • 任意两个服务器之间至多通过一条通信通道直接连接,且没有通道连接服务器到它自己(即:没有重边和自环);
  • 对于任意一对服务器,都存在路径可以通过一个或多个中间服务器将数据从其中一个服务器传输到另一个服务器(即:这个图连通)。

输出格式

输出两个整数 k,ck,c,用空格隔开,分别表示选择的容错集合中服务器的最小数量,以及在服务器数量最小的前提下选择容错集合的方式的数量对 109+710^9 + 7 取模的结果。

5 5
1 2
2 3
3 4
3 5
4 5
2 3

提示

样例解释

在样例中,容错集合可以为 {1,3},{1,4},{1,5}\{1, 3\},\{1, 4\} , \{1, 5\}

数据范围

本题满分为 101101 分。

子任务 分值 nn mm
11 2525 2n102\le n\le10 1m451\le m\le45
22 2727 2n2000002\le n\le200000 m=n1m=n-1
33 2828 2n10002\le n\le1000 1m50001\le m\le5000
44 2121 2n2000002\le n\le200000 1m2000001\le m\le200000