注意到不相交的情况太多(我考场上写换根写疯了)
首先考虑反求问题,不相交的路径数=所有路径数-相交路径数
考虑相交有哪些情况
我们把第三种颜色互换一下就变成了第二种
我们发现绿色的链总是过黑链的的
我们考虑枚举这个
他可以是两条只在子树内的链或者是一条子树内的链和一条从子树内(可以不进)到子树外的链
因此我们只需要算过一个点子树内的链长为方案数以及从子树内(可以不进)到子树外的链长为方案数
考虑一条链拆成两条
设从出发,子数内单链长为的方案
则
设从出发,子数外单链长为的方案
则
就是来自父亲上面的,父亲下面不过自己的
合并的时候是类似背包的,我们把前面的儿子()与合并
因此
更简单