链接
题解
先判断是不是无解:无根树与 p r u f e r prufer prufer序列一一对应,所以合法的 p r u f e r prufer prufer序列存在的条件就是无根树存在的条件, p r u f e r prufer prufer序列存在的条件就是所有点的度数都大于 0 0 0而且都不大于 n − 1 n-1 n−1,而且所有点的度数之和要等于 2 n − 2 2n-2 2n−2
如果答案存在的话,那就用可重复排列组合公式:
a n s = ( n − 2 ) ! ∏ i = 1 n ( d i − 1 ) ! ans = \frac{(n−2)!}{\prod^n_{i=1}(d_i−1)!} ans=∏i=1n(di−1)!(n−2)!
代码
import math
n = int(input())
lis = [int(x) for x in input().split()]
if n==1:
if lis[0]==0:
print(1)
else:
print(0)
exit(0)
tot = sum(lis) - n
if tot != n-2:
print(0)
exit(0)
ans = math.factorial(n-2)
for d in lis:
if d<=0 or d>n-1:
print(0)
exit(0)
ans //= math.factorial(d-1)
print(ans)