欧拉序的小技巧
这里的欧拉序是指 dfs 时开始和结束时将当前节点加进序列里。
上图的欧拉序就是:\(1,2,4,4,3,7,7,3,2,5,5,6,6\)。
在欧拉序中,每个点恰好会出现 \(2\) 次,记 \(x\) 第一次出现的位置为 \(dfn_x\)。可以发现 \((dfn_x,dfn_y]\) 中,\(x\) 到 \(y\) 上的链恰好出现奇数次(\(1\) 次),其他点出现偶数次(注意,这里不包括 \(\operatorname{lca}(x,y)\))。
这有什么用吗?通过欧拉序,可以把链上问题转换为区间问题,维护一些出现奇数次的信息,如链上的异或和等。