如果你只过一个点
查看原帖
如果你只过一个点
300735
HL_Imrt楼主2024/7/9 17:30

注意是否是在查找更新祖先并计算当前点到队伍第一个的距离时,是先递归再更新

int find(int x){
	if(f[x]==x) return f[x];
	int k=find(f[x]);
	dis[x]+=dis[f[x]];
	return f[x]=k;
} 

而不是

int find(int x){
	if(f[x]==x) return f[x];
	dis[x]+=dis[f[x]];
	return f[x]=find(f[x]);
} 

因为这个值需要依靠他父亲节点的值需要先算父亲节点的

2024/7/9 17:30
加载中...