社区讨论

萌新求教(这两种写法有什么区别?)

P3258[JLOI2014] 松鼠的新家参与者 3已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@mi7cr4rk
此快照首次捕获于
2025/11/20 19:32
4 个月前
此快照最后确认于
2025/11/20 19:32
4 个月前
查看原帖
CPP
                 _,._
             __.'   _)
            <_,)'.-"a\
              /' (    \
  _.-----..,-'   (`"--^
 //              |
(|   `;      ,   |
  \   ;.----/  ,/
   ) // /   | |\ \
   \ \\`\   | |/ /
    \ \\ \  | |\/
     `" `"  `"` 
     
CPP
void dfs1(int x)
{
	for(int i=head[x];i;i=e[i].next)
	{
		int v=e[i].to;
		if(!dep[v])
		{
			dep[v]=dep[x]+1;
			fa[v][0]=x;
			dfs1(v);
			for(int j=1;j<=20;j++)
			fa[v][j]=fa[fa[v][j-1]][j-1];
			
		}
	}
}
CPP
void dfs1(int x)
{
	for(int i=head[x];i;i=e[i].next)
	{
		int v=e[i].to;
		if(!dep[v])
		{
			dep[v]=dep[x]+1;
			fa[v][0]=x;
			dfs1(v);
			
		}
	}
}
加
for(int j=1;j<=20;j++)
	for(int i=1;i<=n;i++)
	fa[i][j]=fa[fa[i][j-1]][j-1];
两种写法有什么不同 为什么第一种只对了一个点而第二种全过

回复

7 条回复,欢迎继续交流。

正在加载回复...