问题标签 [disjoint-union]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
596 浏览

algorithm - 从一个节点 A 到节点 B 的最大边权重

给定一个有N个节点 (1 <= N <= 2 * 10^5) 和N-1 条边的连通无向图。让我们定义一个函数F(a,b),其中F(a, b)等于从ab的路径中的最大边权重。我们如何找到所有a , b的F(a, b)的总和,使得1 <= a , b <= N (mod 10^9 + 7)

示例图

在此处输入图像描述

F(a, b) 等于从 a 到 b 的路径中的最大边权重。

F(1, 2) = 2

F(1, 3) = 2

F(1, 4) = 4

F(1, 5) = 4

F(2, 3) = 1

F(2, 4) = 4

F(2, 5) = 4

F(3, 4) = 4

F(3, 5) = 4

F(4, 5) = 3

所有对的 F 之和等于 32。

0 投票
4 回答
356 浏览

c - C、Pascal 和 SML 中的不相交联合

我正在研究编程中的不相交联合。我遇到了这样的说法PascalSML并且C有自己的工会版本variant recordconstructionunion。也有人说Pascal包含一个您不必使用它的“标签”,SML有一个您需要使用它的标签并且C没有标签。此外,SML如果我们用错了会抛出异常,Pascal允许在运行时检查并且C没有在运行时检查的功能,程序员必须手动为“标签”添加一个字段。

首先,我不明白什么是“标签”。我试图查看这些联合的一些示例,但不明白“标签”代表什么。如果“标签”很重要,怎么C会有一个?这些工会有什么区别。另外,我没有找到任何与工会“标签”相关的材料。此外,“在运行时检查”是什么意思,检查什么?很高兴看到展示这些功能的简单示例。

0 投票
1 回答
675 浏览

typescript - 精炼打字稿不相交的联合

我正在尝试使以下内容起作用,但是打字稿在尝试访问该o.foo属性时输出错误:

错误是

似乎打字稿无法正确推断出如果o有一个foo属性,即字符串,那么 of 的类型o必须在Base & Extra联合的分支中。

有没有办法让它明白这一点?

0 投票
2 回答
546 浏览

java - 为什么我的联合查找不相交集算法没有通过所有测试用例?

样本输入:

第一行 = # 个测试用例

第二行第一个人数=人数

第二行第二个数 = 好友数,F

跟随F行=友谊

输出将是最大朋友组的大小。

因此,该输入的样本输出为 3。 ([1, 2, 3])

我的解决方案:

它适用于样本输入,但是当它通过一个运行数百个测试用例的在线判断系统时,它告诉我错误的输出。不确定我的错误可能在哪里?对我来说似乎是一个简单的 UFDS 问题。

0 投票
2 回答
802 浏览

python - 如何正确实现不相交的集合数据结构以在 Python 中查找跨越森林?

最近在尝试实现google kickstater 2019编程题的解决方案,按照分析解释尝试实现Round E的Cherries Mesh。这是问题和分析的链接。 https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050edb/0000000000170721

这是我实现的代码:

这通过了示例用例,但没有通过测试用例。据我所知,这应该是正确的。难道我做错了什么?

0 投票
1 回答
155 浏览

c++ - 使用c ++的不相交集联合实现

我正在根据cp 算法在 C++ 中通过秩和路径压缩来实现不相交集联合。但是在这里我得到一个错误 ,对“秩”的引用是模棱两可的。我已经阅读了很多关于这个错误的文章,但没有得到任何满意的答案。有人可以帮我解决这个问题吗?在此先感谢。

0 投票
2 回答
70 浏览

algorithm - 在不相交集联合(DSU)中,为什么我们在执行联合操作时将较小的子集作为较大子集的子集?

我最近在树上遇到了 DSU 及其应用程序。当我在解决相关问题时,我遇到了 Time Limit Exceeded 错误,所以我再次阅读了教程,在那里我发现普通联合的即兴版本是加权联合. 在这个加权联合操作中,我们将较小子集的根作为较大子集(在两者中)根的子节点。它如何使我们受益?链接到教程

0 投票
1 回答
66 浏览

c++ - 我的 C++ 函数给出了关于声明的异常错误

我只是想不通我到底做错了什么。我检查了多次,但无济于事。这可能是非常愚蠢的事情。它不断给出以下错误。

0 投票
1 回答
31 浏览

graph - 这个问题可以在没有 bfs 或存储边的情况下完成吗?

给定一个具有n 个节点和n 个边的无向连通图。现在给定两个节点ab。找到从 a 到 b 的路径中但不属于循环的边数。(因为边数是 n 肯定会有一个循环)。这可以通过 dsu 数据结构来完成吗,因为如果删除一条边断开 a 和 b 我们可以在答案中计算它。提前致谢。

0 投票
1 回答
154 浏览

algorithm - 使用“路径减半”对不相交集进行 Find() 操作

根据Disjoint-set_data_structure,在 Union 部分,我在理解路径减半方法的实现时遇到了问题。

我的第一次迭代看起来像这样:

在此处输入图像描述

第一次迭代后,x.parent指向x同一个节点(这不应该发生)。我需要有关此函数的正确流程和迭代的帮助

我对该函数的第 3 行和第 4 行以及“路径减半使路径上的每个其他节点都指向其祖父母”感到困惑。

任何帮助将不胜感激,谢谢!