虽已AC但有疑问
查看原帖
虽已AC但有疑问
920320
bianshiyang楼主2023/12/29 19:48

请问下面两种代码的区别在哪里,将第一份代码换成第二份就AC了,本蒟蒻实在看不出哪里有什么问题。

TREE work2(int x,int y)
{
	int fx=top[x];
	int fy=top[y];
	TREE res1={},res2={};
	while(fx!=fy)
	{
		if(dep[fx]<dep[fy])
		{
			res2=hb(query(1,1,n,id[fy],id[y]),res2);
			y=f[fy];
			fy=top[y];
		}
		else
		{
			res1=hb(query(1,1,n,id[fx],id[x]),res1);
			x=f[fx];
			fx=top[x];
		}
	}
	if(dep[x]>dep[y]) res1=hb(query(1,1,n,id[y],id[x]),res1);
	else res2=hb(query(1,1,n,id[x],id[y]),res2);
	swap(res1.lm,res1.rm);
	return hb(res1,res2);
}
TREE work2(int x,int y)
{
	int fx=top[x];
	int fy=top[y];
	TREE res1={},res2={};
	while(fx!=fy)
	{
		if(dep[fx]<dep[fy])
		{
			res2=hb(res2,query(1,1,n,id[fy],id[y]));
			y=f[fy];
			fy=top[y];
		}
		else
		{
			res1=hb(res1,query(1,1,n,id[fx],id[x]));
			x=f[fx];
			fx=top[x];
		}
	}
	if(dep[x]>dep[y]) res1=hb(res1,query(1,1,n,id[y],id[x]));
	else res2=hb(res2,query(1,1,n,id[x],id[y]));
	swap(res1.lm,res1.rm);
	return hb(res1,res2);
}
2023/12/29 19:48
加载中...