[NOIP2022] 建造军营

Luogu
IDLGP8867
Time1000ms
Memory512MB
DifficultyP6
2022NOIP 提高组O2优化树形 DPTarjan双连通分量容斥原理
A 国与 B 国正在激烈交战中,A 国打算在自己的国土上建造一些军营。 A 国的国土由 $n$ 座城市组成,$m$ 条双向道路连接这些城市,使得**任意两座城市均可通过道路直接或间接到达**。A 国打算选择一座或多座城市(**至少一座**),并在这些城市上各建造一座军营。 众所周知,军营之间的联络是十分重要的。然而此时 A 国接到情报,B 国将会于不久后袭击 A 国的一条道路,但具体的袭击目标却无从得知。如果 B 国袭击成功,这条道路将被切断,可能会造成 A 国某两个军营无法互相到达,这是 A 国极力避免的。因此 A 国决定派兵看守若干条道路(**可以是一条或多条,也可以一条也不看守**),A 国有信心保证被派兵看守的道路能够抵御 B 国的袭击而不被切断。 A 国希望制定一个建造军营和看守道路的方案,使得 B 国袭击的无论是 A 国的哪条道路,都不会造成某两座军营无法互相到达。现在,请你帮 A 国计算一下可能的建造军营和看守道路的方案数共有多少。由于方案数可能会很多,你只需要输出其对 $1,000,000,007\left(10^{9}+7\right)$ 取模的值即可。两个方案被认为是不同的,当且仅当存在至少一座城市在一个方案中建造了军营而在另一个方案中没有,或者存在至少一条道路在一个方案中被派兵看守而在另一个方案中没有。 ## Input 第一行包含两个正整数 $n,m$,分别表示城市的个数和双向道路的数量。 接下来 $m$ 行,每行包含两个正整数 $u_{i},v_{i}$,描述一条连接 $u_{i}$ 和 $v_{i}$ 的双向道路。保证没有重边和自环。 ## Output 输出一行包含一个整数,表示建造军营和看守道路的方案数对 $1,000,000,007\left(10^{9}+ 7\right)$ 取模的结果。 [samples] ## Note ### 样例 1 解释 样例中,A 国共有两座城市,有 $1$ 条道路连接他们。 所有可能的方案如下: - 在城市 $1$ 建军营,不看守这条道路; - 在城市 $1$ 建军营,看守这条道路; - 在城市 $2$ 建军营,不看守这条道路; - 在城市 $2$ 建军营,看守这条道路; - 在城市 $1,2$ 建军营,看守这条道路。 ### 数据规模与约定 对于所有数据,保证 $1 \leq n \leq 5 \times 10^5$,$n - 1 \leq m \leq 10^6$,$1 \leq u_i, v_i \leq n$,$u_i \neq v_i$。 ::cute-table{tuack} |测试点编号 | $n \leq $ | $m \leq $| 特殊条件 | | :-: | :-: | :-: | :-: | | $1 \sim 3$ | $8$ | $10$ | 无 | | $4 \sim 7$ | $16$ | $25$ | ^ | | $8 \sim 9$ | $3000$ | $5000$ | ^ | | $10 \sim 11$ | $5 \times 10^5$ | $10^6$ | 特殊性质 $\mathrm{A}$ | | $12 \sim 14$ | ^ | ^ | $m = n - 1$ | | $15 \sim 16$ | ^ | ^ | $m = n$ | | $17 \sim 20$ | ^ | ^ | 无 | 特殊性质 $\mathrm{A}$:保证 $m=n-1$ 且第 $i$ 条道路连接城市 $i$ 与 $i+1$。
Samples
Input #1
2 1
1 2
Output #1
5
Input #2
4 4
1 2
2 3
3 1
1 4
Output #2
184
Input #3
见附加文件里的 barrack/barrack3.in
Output #3
见附加文件里的 barrack/barrack3.ans
Input #4
见附加文件里的 barrack/barrack4.in
Output #4
见附加文件里的 barrack/barrack4.ans
API Response (JSON)
{
  "problem": {
    "name": "[NOIP2022] 建造军营",
    "description": {
      "content": "A 国与 B 国正在激烈交战中,A 国打算在自己的国土上建造一些军营。 A 国的国土由 $n$ 座城市组成,$m$ 条双向道路连接这些城市,使得**任意两座城市均可通过道路直接或间接到达**。A 国打算选择一座或多座城市(**至少一座**),并在这些城市上各建造一座军营。 众所周知,军营之间的联络是十分重要的。然而此时 A 国接到情报,B 国将会于不久后袭击 A 国的一条道路,但具体的袭击目标",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 1000,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P6"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP8867"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "A 国与 B 国正在激烈交战中,A 国打算在自己的国土上建造一些军营。\n\nA 国的国土由 $n$ 座城市组成,$m$ 条双向道路连接这些城市,使得**任意两座城市均可通过道路直接或间接到达**。A 国打算选择一座或多座城市(**至少一座**),并在这些城市上各建造一座军营。\n\n众所周知,军营之间的联络是十分重要的。然而此时 A 国接到情报,B 国将会于不久后袭击 A 国的一条道路,但具体的袭击目标...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments