lca

xiaoxiao2021-02-28  92

最近公共祖先。

#include<iostream> using namespace std; int jump(int u,int step) { for (int k=0 k<=20 k++) if (step&(l<<k)>0) u:=f[u][k]; return u; } int lca(int u,int v) { if (deep[u])<deep[v]) swap(u,v); u=jump(u,deep[u]-deep[v]); for (int k=20;k>=0; k--) if (f[u][k]!=f[v][k]) u=f[u][k],v=f[v][k]; return u==v?u:fa[u]; } int main() { lca; }
转载请注明原文地址: https://www.6miu.com/read-71334.html

最新回复(0)