kruscal用数组代替并查集可以吗?

发布于 2022-09-04 02:19:05 字数 107 浏览 27 评论 0

用一个bool join[max_n]数组保存点是否已经有边连接,在遍历边时,如果边两端的点x和y的join[x]和join[y]都等于1,则说明这两个点都有边连接他们了,则不考虑这条边。这样可以吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

少女七分熟 2022-09-11 02:19:05

两个节点 join 为 1 并不能说明两个点在同一个联通块的。也就是说可能两个点在不同联通块内而都有别边连接,那么这条边会合并两个联通块。所以还是并查集吧。
当然有一种叫做 link-cut-tree 的数据结构也可以轻松维护最小生成树,本质也是维护联通块的连通性。

祁梦 2022-09-11 02:19:05

kruscal算法在求最小生成树时,充分利用了贪心的特点。比如:
Image
AB和CD会最先被选出来,此时它们被访问过了,但不属于同一棵树。如果ABCD不联通,此时算法已经结束,求出了这个森林的所有最小生成树,但使用数组并不知道这些点是属于一棵树还是分别属于多棵树。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文