#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.incities/cities2.ans

样例 3

见选手目录下的 cities/cities3.incities/cities3.ans

样例 4

见选手目录下的 cities/cities4.incities/cities4.ans

数据范围

对于所有的数据,保证:

测试点