一、题目
二、解法
设 d p [ i ] dp[i] dp[i]为在点 i i i出发要找到出口的期望步数,我们很轻易地列出下列 d p dp dp式:
d p [ i ] = ∑ s o n ( d p [ s o n ] + 1 ) ∗ p [ i ] + e [ i ] ∗ 0 + ( d p [ f a ] + 1 ) ∗ p [ i ] + k [ i ] ∗ d p [ 1 ] dp[i]=\sum_{son}(dp[son]+1)*p[i]+e[i]*0+(dp[fa]+1)*p[i]+k[i]*dp[1] dp[i]=∑son(dp[son]+1)∗p[i]+e[i]∗0+(dp[fa]+1)∗p[i]+k[i]∗dp[1]
其中 p [ i ] = ( 1 − e [ i ] − k [ i ] ) / d e g [ i ] p[i]=(1-e[i]-k[i])/deg[i] p[i]=(1−e[i]−k[i])/deg[i],意思是随机走向相邻点的概率, d e g [ i ] deg[i] deg[i]是 i i i的度数,很显然,答案是 d p [ 1 ] dp[1] dp[1]。
但是我们不可能直接转移,因为可能存在互相推的情况(我们一直要使用 d p [ 1 ] dp[1] dp[1]),而用高斯消元硬解肯定要 G G GG GG。由于这是一颗树,我们来考虑树的特殊性质(树形 d p dp dp)。
由于 d p [ i ] dp[i] dp[i]可以当常量看待,我们尝试手动减少未知量的个数(即对 d p [ s o n ] dp[son] dp[son]和 d p [ f a ] dp[fa] dp[f