美化版lca

Posted mmasker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了美化版lca相关的知识,希望对你有一定的参考价值。

int FA[MAXN],dep[MAXN],sz[MAXN],son[MAXN],top[MAXN];
vector<int>G[MAXN];

void dfs1(int u,int fa){
    sz[u]=1; dep[u]=dep[fa]+1; FA[u]=fa;
    for(int i=0;i<G[u].size();i++){
        int v=G[u][i];
        if(v==fa)continue;
        dfs1(v,u);
        sz[u]+=sz[v];
        if(sz[v]>sz[son[u]])son[u]=v;
    }
}

void dfs2(int u){
    if(son[u]){
        top[son[u]]=top[u];
        dfs2(son[u]);
    }
    for(int i=0;i<G[u].size();i++){
        int v=G[u][i];
        if(v==FA[u]||v==son[u])continue;
        top[v]=v;
        dfs2(v);
    }
}

int lca(int u,int v){
    while(top[u]!=top[v]){
        if(dep[top[u]]>dep[top[v]])swap(u,v);
        v=FA[top[v]];
    }
    if(dep[u]>dep[v])swap(u,v);
    return u;
}

 

这份模板需要首先对树上任意一点进行dfs1(rt);然后将top [ rt ] 设为1,之后再进行一遍dfs2(rt),如何通过输入求解lca。

以上是关于美化版lca的主要内容,如果未能解决你的问题,请参考以下文章

代码神器,美化你的课程报告

代码神器,美化你的课程报告

JAVA实现QQ登录注册修改密码等功能(美化版)

Mac版PowerPoint美化插件都有哪些

[LCA]二月的最后一天来搞事情吧

[vscode]--HTML代码片段(基础版,reactvuejquery)