判断是否应该将一个点入队时用方案数组(f)是否有值来代替会导致重复入队并MLE 但是前47个点答案还都是对的……改为用vis数组判断一下是否入过队就过了 为啥?
正确写法
for(auto v:G[u]){
if(!vis[v]){
dep[v][op]=dep[u][op]+1;
q.push(v);
vis[v]=true;
}
if(dep[v][op]==dep[u][op]+1)
(f[v][op]+=f[u][op])%=mod;
}
错误写法
for(auto v:G[u]){
if(!f[v][op]){
dep[v][op]=dep[u][op]+1;
q.push(v);
}
if(dep[v][op]==dep[u][op]+1)
(f[v][op]+=f[u][op])%=mod;
}