CF2127D.Root was Built by Love, Broken by Destiny

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Heartfall River 横贯 Destinyland,将其分为北岸和南岸。

工程师 Root 想要在河边建造 nn 座房屋,编号从 11 到 nn。所有北岸的房屋和所有南岸的房屋都必须分别沿着与 Heartfall River 平行的直线排列。

将建造 mm 座桥,第 ii 座桥连接房屋 uiu_i 和房屋 viv_i(ui≠viu_i \ne v_i)。保证所有 nn 座房屋通过这些桥是连通的,也就是说,可以通过若干桥从任意一座房屋到达另一座房屋。此外,不存在两座桥连接同一对房屋。

Root 想知道,有多少种方式可以沿河排列这 nn 座房屋(对 109+710^9+7 取模),使得计划中的 mm 座桥满足以下条件:

  • 对于每一座桥,它连接的两座房屋必须分别位于河的两岸;
  • 当桥作为直线连接两座房屋时,所有桥都不会相交。

当 n=5n=5 时的一种可能的房屋排列方式。

如果存在以下任一情况,则两种排列被认为是不同的:

  • 存在某座房屋在两种排列中位于不同的河岸;
  • 存在两座房屋 aa 和 bb,它们在两种排列中都位于同一岸,但在一种排列中 aa 在 bb 前面,而在另一种排列中 bb 在 aa 前面。

由于 Root 被命运分离的前任分心,他请求你计算有多少种方式可以沿河排列房屋,对 109+710^9+7 取模。

输入格式

每组测试数据包含多个测试用例。第一行包含测试用例数 tt(1≤t≤1041 \le t \le 10^4)。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nn 和 mm(2≤n≤2⋅1052 \leq n \leq 2 \cdot 10^5, n−1≤m≤min⁡(n(n−1)2,2⋅105)n-1 \leq m \leq \min\left(\frac{n(n-1)}{2}, 2 \cdot 10^5\right))——房屋数量和桥的数量。

接下来 mm 行,每行包含两个整数 uiu_i 和 viv_i(1≤ui,vi≤n1 \leq u_i,v_i \leq n, ui≠viu_i\ne v_i)——第 ii 座桥连接的两座房屋编号。

保证所有 nn 座房屋通过这些桥是连通的,且不存在两座桥连接同一对房屋。

保证所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5,mm 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数,表示沿河排列房屋的方案数,对 109+710^9+7 取模。

输入输出样例

  • 输入#1

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

    输出#1

    2
    0
    8
    12

说明/提示

在第一个测试用例中,房屋 11 可以建在北岸,房屋 22 建在南岸,或者反过来。

在第二个测试用例中,至少有两座房屋必须建在同一岸。但任意两座房屋之间都有桥相连,因此无论如何排列,至少有一座桥不会跨越河流。因此,答案为 00。

在第三个测试用例中,题目描述中给出了一种可能的房屋排列方式。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页