【板子】欧拉序

树转区间: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;
}
相关推荐
2603_969694852 小时前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea2 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
唐墨1233 小时前
linux kernel 比较数据大小的宏定义
linux·算法
拂拉氏4 小时前
【知识讲解-题目讲解】 统计满足K约束的子字符串数量2 (滑动窗口+前缀和+二分查找+分析)
算法·前缀和·二分查找·滑动窗口
Go Work6 小时前
两个等值条件摆着,MySQL 偏要全表扫
经验分享·笔记
Oll Correct6 小时前
Adobe illustrator 案例十四:花元素标志草图绘制
笔记·ui·adobe·illustrator
通信小呆呆8 小时前
电子战抗干扰技术:当“不被干扰”成为一种系统
算法·通信·mimo·isac
老歌老听老掉牙9 小时前
案例 7:二维 Rosenbrock 函数最小值(香蕉函数)
c++·pso
笑容掩饰我的失落9 小时前
区块链从小白到精通(八):从零实现一个标准 ERC-20 代币(完整可运行代码)
算法·区块链·php·智能合约·哈希算法