麻花痒 发表于 2022-8-10 10:02:22

LCA(倍增)

inline void dfs(int u, int f)
{
        fa = f;
        dep = dep + 1;
        for(int i = 1; i <= 26; ++i)
          fa = fa];
        int v;
        for(int e = hd; e; e = nt)
          if((v = to) ^ f)
                dfs(v, u);
}
inline int LCA(int u, int v)
{
        if(dep < dep) swap(u, v);
        if(u == v) return u;
        for(int i = 26; i >= 0; --i)
          if(dep] >= dep)
                u = fa;
        if(u == v) return u;
        for(int i = 26; i >= 0; --i)
          if(fa ^ fa)
                u = fa, v = fa;
        return fa;
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: LCA(倍增)