#2019. 「PTS 2023」城市建造

内存限制:512 MiB 时间限制:1000 ms 输入文件:cities.in 输出文件:cities.out
题目类型:传统 评测方式:文本比较
上传者: HHOJ

题目描述

在这个国度里面有 座城市,一开始城市之间修有若干条双向道路,导致这些城市形成了 个连通块,特别的,这些连通块之间两两大小差的绝对值不超过 。为了方便城市建设与发展, 座城市中的某 座城市在这 座城市之间额外修建了至少一条双向道路,使得所有城市连通。

现在已经知道额外修建后的所有道路,你需要算出有哪些双向道路集合 ,满足这些道路有可能是后来额外修建的,请输出答案对 取模的结果。

即给定一张 个点 条边的无向连通图 ,询问有多少该图的子图 ,满足 且 中恰好有 个连通块,且任意两个连通块大小之差不超过 ,保证 ,请输出答案对 取模的结果。

输入格式

从文件 cities.in 中读入数据。

输入的第一行包含三个正整数 ,分别表示城市数、修建后的道路数以及任意两个连通块大小之差的上限。

接下来 行每行包含两个正整数 ,表示城市 和 之间存在一条双向道路,保证 。

输出格式

输出到文件 cities.out 中。

输出一个数表示答案对 取模后的结果。

样例

样例 1 输入

4 4 1
1 2
2 3
1 3
3 4

样例 1 输出

2

样例 1 解释

有以下两种情况:

  • 本来只有 这一条道路,此时有三个连通块,分别为 ;后来城市 决定在他们三座城市中额外修建了 这三条道路,使得所有城市连通。
  • 本来没有任何道路,此时有四个连通块,分别为 ;后来城市 决定在他们四座城市中额外修建了 这四条道路,使得所有城市连通。

样例 2

见选手目录下的 cities/cities2.in 与 cities/cities2.ans。

样例 3

见选手目录下的 cities/cities3.in 与 cities/cities3.ans。

样例 4

见选手目录下的 cities/cities4.in 与 cities/cities4.ans。

数据范围

对于所有的数据,保证:。

测试点