求助奇怪的输出
  • 板块学术版
  • 楼主小小蒲公英
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/15 09:47
  • 上次更新2023/11/15 09:49:53
查看原帖
求助奇怪的输出
392816
小小蒲公英楼主2023/11/15 09:47
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,这是为啥呀

2023/11/15 09:47
加载中...