社区讨论

警示后人(if你只AC on #1 #3 #11)

P3384【模板】重链剖分 / 树链剖分参与者 2已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@mjwhh8qn
此快照首次捕获于
2026/01/02 14:19
2 个月前
此快照最后确认于
2026/01/04 22:55
2 个月前
查看原帖
应该没人比我更糖了
CPP
void dfs1(long long x, long long f){
	dep[x]=dep[fa[x]]+1;//错误了,此时fa[x]还未赋值
	fa[x]=f;
	siz[x]=1;
	long long ms=-1;
	for(long long i=head[x];~i;i=a[i].w){
		if(a[i].v==fa[x]) continue;
		dfs1(a[i].v, x);
		siz[x]+=siz[a[i].v];
		if(ms<siz[a[i].v])
			ms=siz[a[i].v], son[x]=a[i].v;
	}
}
void dfs1(long long x, long long f){
	fa[x]=f;
	dep[x]=dep[fa[x]]+1;//所以这样才正确
	siz[x]=1;
	long long ms=-1;
	for(long long i=head[x];~i;i=a[i].w){
		if(a[i].v==fa[x]) continue;
		dfs1(a[i].v, x);
		siz[x]+=siz[a[i].v];
		if(ms<siz[a[i].v])
			ms=siz[a[i].v], son[x]=a[i].v;
	}
}

回复

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

正在加载回复...