2899 - 检验零件

题目描述

某工厂中,每个工人生产的零件都需要经过严格的检验流程。

检验流程规定,每个工人生产的零件,必须经过 3 个不同的人检验合格之后,才能发放产品合格证书。

工厂共有 N 个工人,工人的工位之间通过双向的传送带连接(工位编号为 1 \sim N)。

位于 i 号工位的工人生产完一个零件之后,他会立刻通过传送带,直接传送给跟他相邻工位的工人进行检验。

相邻工位的工人检验完毕后,会在零件的检验标签上,标注检验结果,以及自己工位编号。然后,他会将该零件再次通过传送带,传送给相邻工位的工人进行检验。由于零件必须由 3 个不同的工人检验,因此他一定不会把零件传送给已经检验过该零件的工人

需要注意的是,第 2 个工人检验结束后,可以将零件传送回 i 号工位的工人。即:由零件的生产者作为第 3 个检验人,也是允许的

从编号为 i 的工位开始,零件检验会形成长度为 3 (经过了 3 条传送带)的检验路径。有意思的是,这样的路径可能不是唯一的。

比如,下图所示的工位分布图中,位于 1 号工位的工人生产的零件,可以有如下 7 条不同的合法检验路径。

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

请编程计算出,如果每个工位都需要生产一个零件,并进行检验,所有的工位一共能形成多少条不同的合法检验路径。

输入

1 行输入 2 个整数 NM,分别表示工位数量和传送带数量。

接下来 M 行,每行输入两个整数 U_iV_i,表示 U_i 号工位和 V_i 号工位之间存在一条传送带,任意两个工位之间最多只有一条传送带。

输出

输出一个整数,表示所有工位一共能形成多少条不同的合法检验路径。

样例

输入

3 3
1 2
2 3
3 1

输出

6

输入

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

输出

32

输入

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

输出

16
说明

样例 1 解释

从每个点开始都有 2 条不同的检验路径,因此共有 6 条不同的检验路径。

样例 2 解释

本题的题目描述中的图,对应样例 2 的数据。

1 号点开始,存在 7 条检验路径。

2 号点开始,存在 6 条检验路径。

3 号点开始,存在 8 条检验路径。

4 号点开始,存在 4 条检验路径。

5 号点开始,存在 7 条检验路径。

因此,共有 32 条不同的合法检验路径。

数据范围

对于 30\% 的测评数据,满足 1 \le N \le 1001 \le M \le 1000

对于 80\% 的测评数据,满足 1 \le N \le 1001 \le M \le 5000

对于 100\% 的测评数据,满足 1 \le N \le 10001 \le M \le 100001 \le U_i,V_i \le NU_i \neq V_i

测试数据保证答案不超过 3 \times 10^7

标签
题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 0
通过人数 0
金币数量 1 枚
难度 基础


上一题 下一题