LCA
不哭的超人
愿你孤独的努力终有回报,愿你前行的路上有人相伴。
展开
-
王国
题目:王国 题解:找到每种颜色深度最大的点,然后再和颜色一样的点的距离计算。。使用最近公共祖先。 /* ┏┓ ┏┓ *┏┛┻━━━┛┻┓ *┃ ┃ *┃ ━ ┃ *┃ ┳┛ ┗┳ ┃ *┃ ┃ *┃ ┻ ┃ *┃ ┃ *┗━┓ ┏━┛ * ┃ ┃神兽保佑 * ┃ ┃代码无BUG! * ┃ ┗━━━┓ * ┃ ...原创 2020-10-19 15:30:57 · 229 阅读 · 0 评论 -
Connections between cities
题目:Connections between cities 题解:这是一个森林,建完森林之后把每一个树选择一个点连结到0点,。 判断x和y的时候,如果x和y的最近公共结点是0,那就说明不是同一个树。 #include <map> #include <set> #include <stack> #include <queue> #include <...原创 2020-10-19 15:29:20 · 358 阅读 · 0 评论 -
How far away ?
How far away ? 题解:使用LCA,d[x]数组用来保存x到根节点的最短距离,求出x和y的最近公共结点,用d[x]+d[y]-2*d[LCA(x,y)]就好了。 #include <map> #include <set> #include <stack> #include <queue> #include <cmath> #i...原创 2020-10-19 15:29:27 · 226 阅读 · 0 评论 -
C、Xor Path(LCA模板)
题目:C、Xor Path 题解:先求根节点到每个结点的异或值,用pre[x],和pre[y]来表示,假设求结点x和结点y之间最短路径的异或值,pre[x]和pre[y]之间一定会有重合的部分,但是pre[x]^pre[y],就把相同的给抵消了。但是他们相同的一定会有离他们最近的公共结点 ,需要把这个点保存下来,就用这个点的异或值与他父亲的异或值相异或,就把这个点给保存了。 需要灵活运用倍增。 ...原创 2020-10-19 15:29:51 · 235 阅读 · 0 评论