警钟撅烂
查看原帖
警钟撅烂
280999
_fairytale_楼主2023/12/21 15:02

查询的时候两条链的初值的 pre 和 suf 不要赋成 114514 !!!!要赋成一个大于 2n 的数!!!

inline int pathquery(int u1,int u2){
	tree res1={0,20120712,20120712,0},res2={0,20120712,20120712,0};
	while(top[u1]!=top[u2]){
		if(dep[top[u1]]>dep[top[u2]]){
			res1=merge(query(1,1,n,dfn[top[u1]],dfn[u1]),res1);
			u1=fa[top[u1]];
		}
		else{
			res2=merge(query(1,1,n,dfn[top[u2]],dfn[u2]),res2);
			u2=fa[top[u2]];
		}
	}
	if(dfn[u1]<dfn[u2])res2=merge(query(1,1,n,dfn[u1],dfn[u2]),res2);
	else res1=merge(query(1,1,n,dfn[u2],dfn[u1]),res1);
	return res1.sum+res2.sum+(res1.pre==res2.pre); 
}
2023/12/21 15:02
加载中...