void dfs(int n)
{
for(int i=1;i<=20;i++)
{
cout<<i<<endl;
anc[n][i] = anc[anc[n][i-1]][i-1];
tim[n][i] = tim[n][i-1] + tim[anc[n][i-1]][i-1];
}
for(auto i : E[n])
{
if(i.first == anc[n][0]) continue;
anc[i.first][0] = n; tim[i.first][0] = i.second;
dfs(i.first);
}
return ;
}
这样的一个dfs,他输出的i没有到2截至,一直接着跑
然而
void dfs(int n)
{
for(int i=1;i<=20;i++)
{
cout<<i<<endl;
anc[n][i] = anc[anc[n][i-1]][i-1];
// tim[n][i] = tim[n][i-1] + tim[anc[n][i-1]][i-1];
}
for(auto i : E[n])
{
if(i.first == anc[n][0]) continue;
anc[i.first][0] = n; tim[i.first][0] = i.second;
dfs(i.first);
}
return ;
}
就只会跑到20,这是为啥呀