好难理解啊救命
查看原帖
好难理解啊救命
1232566
Wh1t3zZlo楼主2025/1/15 18:08
void dfs2(int now, int fa){
	if(now != T)
		f[now] = (A[now] * f[fa] % mod + B[now]) % mod;
	for(int to : G[now]){
		if(to == fa) continue;
		dfs2(to, now);
	}
}

f[t]期望为1 所以不需要别的点进行转移 但是如果把if(now != T)去掉 f[t]经过计算后会得到0 因为f[t]是无法向别的点进行转移的 所以即使去掉if最后只要在输出前使得f[t]=1也能ac 但是为什么f[t] 按照a[t]*f[fa]+b[t]的式子算出来会是0呢 f[fa]是0我能理解 但为什么b[t]也是0

2025/1/15 18:08
加载中...