题目名称 3813. [NOIP 2022]建造军营
输入输出 noip2022_barrack.in/out
难度等级 ★★★★
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 20
题目来源 GravatarBenjamin 于2022-11-26加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:2, 提交:2, 通过率:100%
Gravatarsyzhaoss 100 1.751 s 0.00 MiB C++
Gravatarsyzhaoss 100 1.764 s 0.00 MiB C++
关于 建造军营 的近10条评论(全部评论)

3813. [NOIP 2022]建造军营

★★★★   输入文件:noip2022_barrack.in   输出文件:noip2022_barrack.out   简单对比
时间限制:1 s   内存限制:512 MiB

【题目描述】

A 国与 B 国正在激烈交战中, A 国打算在自己的国土上建造一些军营。

A 国的国土由 $n$ 座城市组成, $m$ 条双向道路连接这些城市,使得任意两座城市均可通过道路直接或间接到达。 A 国打算选择一座或多座城市(至少一座),并在这些城市上各建造一座军营。

众所周知,军营之间的联络是十分重要的。然而此时 A 国接到情报, B 国将会于不久后袭击 A 国的一条道路,但具体的袭击目标却无从得知。如果 B 国袭击成功,这条道路将被切断,可能会造成 A 国某两个军营无法互相到达,这是 A 国极力避免的。因此 A 国决定派兵看守若干条道路(可以是一条或多条,也可以一条也不看守),A 国有信心保证被派兵看守的道路能够抵御 B 国的袭击而不被切断。

A 国希望制定一个建造军营和看守道路的方案,使得 B 国袭击的无论是 A 国的哪条道路,都不会造成某两座军营无法互相到达。现在,请你帮 A 国计算一下可能的建造军营和看守道路的方案数共有多少。由于方案数可能会很多,你只需要输出其对 $1, 000, 000, 007(10^9 + 7)$ 取模的值即可。两个方案被认为是不同的,当且仅当存在至少一座城市在一个方案中建造了军营而在另一个方案中没有,或者存在至少一条道路在一个方案中被派兵看守而在另一个方案中没有。

【输入格式】

第一行包含两个正整数 $n$, $m$,分别表示城市的个数和双向道路的数量。

接下来 $m$ 行,每行包含 $2$ 个正整数 $u_i$, $v_i$,描述一条连接 $u_i$ 和 $v_i$ 的双向道路。保证没有重边和自环。

【输出格式】

输出一行包含一个整数,表示建造军营和看守道路的方案数对 $1, 000, 000, 007(10^9\ +\ 7)$ 取模的结果。

【样例1输入】

2 1
1 2

【样例1输出】

5

【样例1解释】

样例中,A国共有2座城市,有1条道路连接它们。

所有可能的方案如下:

·在城市1建军营,不看守这条道路;

·在城市1建军营,看守这条道路;

·在城市2建军营,不看守这条道路;

·在城市2建军营,看守这条道路;

·在城市1,2建军营,看守这条道路;

【样例2输入】

4 4
1 2
2 3
3 1
1 4

【样例2输出】

184

【样例3/4输入输出】

点击下载样例3/4 

【数据规模与约定】