dfs序模板

在这里插入图片描述
列如这个图
seq数组为 1 2 5 3 4 6 7
in数组为1 2 4 5 3 6 7
out数组为7 3 4 3 7 6 7
如果改一个点x的子树上的值,即区间更改seq数组中【in[x],out[x]】的值。
一般可以存一个pos数组,pos[i]代表i这个数在seq数组的位置,即如果说更改3这个节点的权值,即在线段树中更改pos[3]即4的权值即可,如果更改3的整个子树,那么就是更改区间[in[pos[3]],out[pos[3]]]即可。
pos数组为 1 2 4 5 3 6 7

void dfs(int now,int fa,int deep){
    seq[++cnt]=now;
    in[now]=cnt;
    for(i=0;i<v[now].size();i++){
        int to=v[now][i];
        if(to!=fa){
            dfs(to,now,deep+1);
        }
    }
    //seq[++cnt]=now;
    out[now]=cnt;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值