随着一声洗脑的“Lahee~“,沉迷《原初幻想41》的冒险者Antinomy进入了拉凯提卡大森林,这里对应了原初世界的森都,大家都生活在森林和沼泽中沐浴着森林元灵的恩泽。
Antinomy看着错综复杂的树根,突然想到了一个关于树的问题。
现在有一棵拥有个结点的树,结点之间的边都是双向的,那么就有
条边。现在有两个FATE刷在了其中两个结点
和
上。我们假设
表示从结点
走到结点
的最短路径(请注意在树上的最短路径是唯一的),如果这条路径上先经过了
,再经过了
,那么我们就希望避免这条路径。
注意,只有先经过再经过
这两个给出的点才是需要避免的。
Antinomy想知道这棵树上有多少对可以接受的路径。
和
视为两条路径。
第一行输入三个整数分别表示
接下来行,每行两个用空格分隔的整数
,表示点
到点
有一条边。点的索引从
开始。
输出一行一个整数表示答案。答案远小于。
你的算法不应该触发因递归层数过多导致的爆栈,但如果你需要扩栈:
C++可以加入编译选项:
#pragma comment(linker, "/STACK:102400000,102400000")
Python可以增加递归限度:
sys.setrecursionlimit()
但理应是不需要的