关于数据强度
查看原帖
关于数据强度
87064
ducati楼主2021/3/28 10:11
void cut(int x,int y){
	Makeroot(x);
	if (Findroot(y)==x&&f[y]==x&&c[y][0]==0){
		f[y]=c[x][1]=0;
		pushup(x);
	}
}

如果把这段代码给改一下:

void cut(int x,int y){
	Makeroot(x);
	if (Findroot(y)==x&&f[y]==x){//changes here
		f[y]=c[x][1]=0;
		pushup(x);
	}
}

依然能够 AC 。

几乎所有题解都采用了上面的写法,而且通过我的观察,下面的写法是错误的。如果不判断 yy 的左儿子是否为空,那么可能会出现节点卡在了 x,yx,y 之间的情况;前面的 fy=xf_y=xFindroot(y)=x\text{Findroot}(y)=x 并不足以判断此种情况。

综上所述,请求加强数据。

2021/3/28 10:11
加载中...