暗的连锁
题号:NC50467
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

Dark是一张无向图,图中有N个节点和两类边,一类边被称为主要边,而另一类被称为附加边。Dark有N–1条主要边,并且Dark的任意两个节点之间都存在一条只由主要边构成的路径。另外,Dark还有M条附加边。
你的任务是把Dark斩为不连通的两部分。一开始Dark的附加边都处于无敌状态,你只能选择一条主要边切断。一旦你切断了一条主要边,Dark就会进入防御模式,主要边会变为无敌的而附加边可以被切断。但是你的能力只能再切断Dark的一条附加边。
现在你想要知道,一共有多少种方案可以击败Dark。注意,就算你第一步切断主要边之后就已经把Dark斩为两截,你也需要切断一条附加边才算击败了Dark。

输入描述:

第一行包含两个整数N和M;
之后N–1行,每行包括两个整数A和B,表示A和B之间有一条主要边;
之后M行以同样的格式给出附加边。

输出描述:

输出一个整数表示答案。
示例1

输入

复制
4 1 
1 2 
2 3 
1 4 
3 4

输出

复制
3

备注:

对于的数据,
对于的数据,。数据保证答案不超过