日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构——不相交集(并查集)

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构——不相交集(并查集) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目的:解決等價問題。

表示方法:森林,底層實現用數組

主要操作:find()、union()

優化手段:

①find()時路徑壓縮

②union()時按規模合并、按樹高合并(依據情況而定)

Java實現:

class DisjointSet {int father[];DisjointSet(){}DisjointSet(int n) {this.father = new int[n];for (int i = 0; i < n; i++)father[i] = i;}int find(int x) {if (x != father[x])father[x] = find(father[x]); // 回溯、壓縮路徑return father[x];}void union(int x, int y) {x = find(x);y = find(y);if (x == y)return;if (x < y) {if (father[y] == y)father[x] = father[x] == x ? -2 : father[x] - 1;elsefather[x] += father[y];father[y] = x;} else {if (father[x] == x)father[y] = father[y] == y ? -2 : father[y] - 1;elsefather[y] += father[x];father[x] = y;}} }

?解決問題:迷宮生成問題、樹節點的最近祖先、連通回路等

轉載于:https://www.cnblogs.com/tonyluis/p/5700993.html

總結

以上是生活随笔為你收集整理的数据结构——不相交集(并查集)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。