Antinomy与LaHee大森林
题号:NC200137
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

随着一声洗脑的“Lahee~“,沉迷《原初幻想41》的冒险者Antinomy进入了拉凯提卡大森林,这里对应了原初世界的森都,大家都生活在森林和沼泽中沐浴着森林元灵的恩泽。

 

Antinomy看着错综复杂的树根,突然想到了一个关于树的问题。

 

现在有一棵拥有个结点的树,结点之间的边都是双向的,那么就有条边。现在有两个FATE刷在了其中两个结点上。我们假设表示从结点走到结点的最短路径(请注意在树上的最短路径是唯一的),如果这条路径上先经过了,再经过了,那么我们就希望避免这条路径。

 

注意,只有先经过再经过这两个给出的点才是需要避免的。

 

Antinomy想知道这棵树上有多少对可以接受的路径

 

视为两条路径。


输入描述:

第一行输入三个整数分别表示

接下来行,每行两个用空格分隔的整数,表示点到点有一条边。点的索引从开始。




输出描述:

输出一行一个整数表示答案。答案远小于
示例1

输入

复制
4 1 4
1 3
2 4
1 4

输出

复制
8
示例2

输入

复制
4 1 4
1 2
2 3
3 4

输出

复制
11

备注:

你的算法不应该触发因递归层数过多导致的爆栈,但如果你需要扩栈:

C++可以加入编译选项:

#pragma comment(linker, "/STACK:102400000,102400000")

Python可以增加递归限度:

sys.setrecursionlimit()

但理应是不需要的