【板子】欧拉序

树转区间:DFS 欧拉序(in /out 时间戳)

树的子树对应一段连续区间,是线段树能处理的核心前提:

  1. 定义 in[u]:第一次访问节点 u 的时间戳;
  2. 定义 out[u]:遍历完 u 整棵子树离开时的时间戳;
  3. 所有属于 u 子树的节点,它们的 in 编号一定落在区间 \(in\[u, outu]\)。

举个例子:

复制代码
1
├─2
└─3

dfs 序:1 → 2 → 回溯 → 3 → 回溯 \(in1=1,\ out1=3\) \(in2=2,\ out2=2\) \(in3=3,\ out3=3\) 子树 1 对应区间 \(1,3\),子树 2 对应 \(2,2\)。

DFS 预处理代码片段

复制代码
int tim=0;
double w[300005]; // w[u] = ln(节点u当前权值)
int in[300005],out[300005];
vector<int>g[300005];

void dfs(int u,int fa){
    in[u]=++tim;
    for(int v:g[u]){
        if(v!=fa) dfs(v,u);
    }
    out[u]=tim;
}
相关推荐
AC赳赳老秦4 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
无名猿4 小时前
C++ 查找算法:std::find 与容器成员 find 的性能差距
c++·性能优化·stl·标准库
程序猿编码5 小时前
工业视觉多任务方案:可编程梯度信息视觉框架,训练评估 + C++ 部署完整实战
开发语言·c++·视觉·推理引擎
zhangrelay5 小时前
机械臂末端规划智能模型的误区演示
linux·笔记·学习·ubuntu·ros2
朝朝辞暮i6 小时前
C++ 第 21 课:struct —— 把一组相关数据打包在一起
开发语言·c++·算法
青梅橘子皮6 小时前
Blue---二分算法(二分查找与二分答案)
算法
长河6 小时前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
月光船幽幽7 小时前
加性偏移外推提升参数识别可靠性
python·算法
SHARK_pssm7 小时前
【C++——类和对象(下)】
开发语言·c++·经验分享·笔记
汉克老师7 小时前
GESP2026年9月认证C++二级( 第一部分选择题(1~7题)精讲
c++·gesp·小学生·学c++编程