【板子】欧拉序

树转区间: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;
}
相关推荐
蒸蒸yyyyzwd11 分钟前
cpp选手秋招学习笔记 day12
笔记·学习·oracle
Wang's Blog18 分钟前
PostgreSQL笔记38:慢查询定位与优化的系统方法论
数据库·笔记·postgresql
数模竞赛Paid answer27 分钟前
2025年中青杯数学建模A题康养城市建设求解全过程论文及程序
算法·数学建模·数据分析·中青杯
网安蟹佬霸28 分钟前
密码学安全实战:从加密原理到哈希破解的完整攻防指南
网络·算法·安全·web安全·开源·密码学·哈希算法
XiaQ09191 小时前
Linux 常用命令学习笔记(用户管理篇):用户、组与权限的钥匙
linux·开发语言·笔记·学习
yangmu32031 小时前
深度解析:短视频是如何通过“算法+神经机制”劫持用户时间的?
算法
He BianGu1 小时前
【笔记】使用Assembly.LoadFrom和AssemblyLoadContext加载插件对比,以及有没有更合适的加载插件方案
笔记
hhwyqwqhhwy1 小时前
正点原子-ZYNQ7020 开发笔记
笔记
不可求~1 小时前
C++ 报错交给 AI 之前,先准备好这 8 类信息
开发语言·c++·人工智能
LuminousCPP1 小时前
栈和队列专题(四):LeetCode 232. 用栈实现队列|双栈分工 + 按需迁移 + 摊还 O(1)
c语言·数据结构·笔记·算法·leetcode