From 3ee357b8233df5acb57c770018c7f507a779d0bd Mon Sep 17 00:00:00 2001 From: tth37 <48872409+tth37@users.noreply.github.com> Date: Tue, 27 Aug 2019 23:13:05 +0800 Subject: [PATCH] Update virtual-tree.md MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 改正错别字 临接表->邻接表 --- docs/graph/virtual-tree.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/graph/virtual-tree.md b/docs/graph/virtual-tree.md index 27f5ffff..d44808ed 100644 --- a/docs/graph/virtual-tree.md +++ b/docs/graph/virtual-tree.md @@ -201,14 +201,14 @@ author: HeRaNO, Ir1d, konnyakuxzy, ksyx, Xeonacid, konnyakuxzy, greyqz - 此时栈中还有 3 个节点: $1, 3,7$ ,很明显它们是一条链上的,所以直接链接: $1->3$ 和 $3->7$ 的边。 - 虚树就建完啦! -其中有很多细节,比如我是用临接表存图的方式存虚树的,所以需要清空临接表。但是直接清空整个临接表是很慢的,所以我们在 **有一个从未入栈的元素入栈的时候清空该元素对应的临接表** 即可。 +其中有很多细节,比如我是用邻接表存图的方式存虚树的,所以需要清空邻接表。但是直接清空整个邻接表是很慢的,所以我们在 **有一个从未入栈的元素入栈的时候清空该元素对应的邻接表** 即可。 建立虚树的 C++ 代码大概长这样: ```cpp sort(h + 1, h + 1 + k, cmp); sta[top = 1] = 1, g.sz = 0, g.head[1] = -1; -// 1号节点入栈,清空1号节点对应的临接表,设置临接表边数为1 +// 1号节点入栈,清空1号节点对应的邻接表,设置邻接表边数为1 for (int i = 1, l; i <= k; i += 1) if (h[i] != 1) //如果1号节点是关键节点就不要重复添加 { @@ -222,13 +222,13 @@ for (int i = 1, l; i <= k; i += 1) if (id[l] > id[sta[top - 1]]) //如果LCA不等于次大节点(这里的大于其实和不等于没有区别) g.head[l] = -1, g.push(l, sta[top]), sta[top] = l; - //说明LCA是第一次入栈,清空其临接表,连边后弹出栈顶元素,并将LCA入栈 + //说明LCA是第一次入栈,清空其邻接表,连边后弹出栈顶元素,并将LCA入栈 else g.push(l, sta[top--]); //说明LCA就是次大节点,直接弹出栈顶元素 } g.head[h[i]] = -1, sta[++top] = h[i]; - //当前节点必然是第一次入栈,清空临接表并入栈 + //当前节点必然是第一次入栈,清空邻接表并入栈 } for (int i = 1; i < top; i += 1) g.push(sta[i], sta[i + 1]); //剩余的最后一条链连接一下 -- 2.11.0