QOJ.ac

QOJ

実行時間制限: 12.0 s メモリ制限: 1024 MB 満点: 100 難易度: [表示] ハック可能 ✓

#7004. Rikka 与线图

統計

Rikka 拥有多年 ACM-ICPC 的参赛经验,作为 Keping 大学的一名学生,她紧跟算法发展的潮流。

在本学期的课程中,Rikka 对线图进行了深入研究。在图论的数学学科中,简单无向图 $G$ 的线图是另一个简单无向图 $L(G)$,它表示了 $G$ 中每两条边之间的邻接关系。确切地说,对于一个没有自环或重边的无向图 $G$,其线图 $L(G)$ 是一个满足以下条件的图:

  • $L(G)$ 的每个顶点代表 $G$ 中的一条边;且
  • $L(G)$ 的两个顶点相邻,当且仅当它们在 $G$ 中对应的边共享一个公共端点。

给定一个简单无向图 $G$,Rikka 的研究旨在计算其线图中的顶点数。现在她决定向你展示她早期研究的一些关键结果,涉及 $G$ 的线图 $L(G)$、线图的线图 $L^2(G)$(即 $L(L(G))$)等图中的顶点数,分别记为 $|V(L(G))|, |V(L^2(G))|, \dots$。

根据具有 $n$ 个顶点和 $m$ 条边的无向图的定义,我们知道:

$$|V(L(G))| = \sum_{e} 1 = m = \frac{1}{2} \sum_{u} d_1(u)$$

其中 $d_1(u)$ 表示 $G$ 中顶点 $u$ 的度数。

一旦我们知道如何计数,对于 $G$ 中的任意边 $e$,与 $e$ 共享公共端点的边的数量(即 $e$ 在 $L(G)$ 中的度数,记为 $d'_1(e)$)为:

$$|V(L^2(G))| = \frac{1}{2} \sum_{e} d'_1(e) = \frac{1}{2} \sum_{e=(u,v)} (d_1(u) - 1 + d_1(v) - 1) = \frac{1}{2} \sum_{u} d_1(u)(d_1(u) - 1)$$

类似的简单分析可以帮助我们计算 $|V(L^3(G))|$,而 Rikka 在 2018 年 JheZiang 信息学奥林匹克竞赛中发表的一项优秀成果揭示了 $L^4(G)$ 中的顶点数为:

$$|V(L^4(G))| = \frac{1}{2} \sum_{u} (2d_1^2(u) - 13d_1(u) + 21 + 4d_2(u))d_1(u)(d_1(u) - 1) - 13(d_1(u) - 1)d_2(u) + (d_1(u) - 2)d_{2,2}(u) + d_2^2(u)$$

其中 $d_2(u)$ 是 $G$ 中所有与 $u$ 相邻的顶点的度数之和,而 $d_{2,2}(u)$ 是所有与 $u$ 相邻的顶点的度数的平方和。

基于 $L^5(G) = L^4(L(G))$ 的等式,她的最新工作取得了进一步发展。她从关于 $L^4(G)$ 的结果中推导出了一个线性可计算的方法,以 $O(n+m)$ 的时间复杂度计算 $L^5(G)$ 中的顶点数。Rikka 指出,在 $|V(L^4(G))|$ 的求和形式中所需的关于顶点的数据,暗示了具有相似定义的关于边的新数据。实际上,$d_1$ 和 $d'_1$ 之间的关系是最简单的对应关系。一个更难的对应关系是 $d_2$ 和 $d'_2$ 之间的关系。幸运的是,我们可以在线性时间内计算出所有这些关于边的新数据。因此,尝试用边的求和代替顶点的求和,为 $L^5(G)$ 中的顶点数提供了一个严格的公式。

现在你必须尝试跟上时代的潮流。在本题中,对于一个无向简单图 $G$,你需要计算 $L^6(G)$ 中的顶点数,并将结果对 $(10^9 + 7)$ 取模。

输入格式

输入包含多个测试用例,第一行包含一个整数 $T$ ($1 \le T \le 10$),表示测试用例的数量。

对于每个测试用例,第一行包含两个整数 $n$ ($1 \le n \le 10^5$) 和 $m$ ($0 \le m \le 2 \times 10^5$),表示给定简单无向图 $G$ 的顶点数和边数。

接下来 $m$ 行,描述图的所有边。每行包含两个整数 $u$ 和 $v$ ($1 \le u, v \le n, u \neq v$),表示第 $u$ 个顶点和第 $v$ 个顶点之间的一条边。

输入保证每个测试用例给定的图不包含自环或重边。

输出格式

对于每个测试用例,输出一行,包含一个整数,即 $L^6(G)$ 中的顶点数除以 $(10^9 + 7)$ 的余数。

样例

样例输入 1

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

样例输出 1

396
4

Figure 1. Illustration of a graph G and its line graph L(G)

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.