#P005894. 检验零件
检验零件
题目描述
某工厂中,每个工人生产的零件都需要经过严格的检验流程。
检验流程规定,每个工人生产的零件,必须经过3 个不同的人检验合格之后,才能发放产品合格证书。
工厂共有 个工人,工人的工位之间通过双向的传送带连接(工位编号为 )。
位于 号工位的工人生产完一个零件之后,他会立刻通过传送带,直接传送给跟他相邻工位的工人进行检验。
相邻工位的工人检验完毕后,会在零件的检验标签上,标注检验结果,以及自己工位编号。然后,他会将该零件再次通过传送带,传送给相邻工位的工人进行检验。由于零件必须由 个不同的工人检验,因此他一定不会把零件传送给已经检验过该零件的工人。
需要注意的是,第 个工人检验结束后,可以将零件传送回 号工位的工人。即:由零件的生产者作为第 个检验人,也是允许的。
从编号为 的工位开始,零件检验会形成长度为 (经过了 条传送带)的检验路径。有意思的是,这样的路径可能不是唯一的。
请编程计算出,如果每个工位都需要生产一个零件,并进行检验,所有的工位一共能形成多少条不同的合法检验路径。
输入格式
第 行输入 个整数 和 ,分别表示工位数量和传送带数量。
接下来 行,每行输入两个整数 和 ,表示 号工位和 号工位之间存在一条传送带,任意两个工位之间最多只有一条传送带。
输出格式
输出一个整数,表示所有工位一共能形成多少条不同的合法检验路径。
样例
输入
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
数据范围
对于 的测评数据,满足 ,。
对于 的测评数据,满足 ,。
对于 的测评数据,满足 ,,,。
测试数据保证答案不超过 。