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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

基础 并查集

發布時間:2025/3/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基础 并查集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

并查集是一種樹型的數據結構,是若干個不相交集合,能夠實現較快的合并和元素判斷的操作。常常在使用中以森林來表示。在這里主要介紹的是普通并查集,很多情況下使用的并查集是需要擴展的,根據使用情況的不同,有很多差別,因自身知識不足,不多介紹,以后添加。

基礎并查集偽代碼:

#include <iostream> using namespace std; #define Size 1000 int a[Size];//初始化并查集 int init(){for(int i=0;i<Size;i++)a[i]=i; }//無路徑壓縮的查找根節點 int find(int x){while(a[x]!=x)x=a[x];return x; } //合并兩個元素所在的集合 int merage(int x,int y){x=find(x);y=find(y);if(x!=y)a[x]=y; } int main() {...return 0; }

壓縮路徑:

int find(int x){int q,p;p=x;while(a[x]!=x)//找根節點 x=a[x];while(p!=x)//壓縮路徑,修改路徑中所有節點 {q=a[p];a[p]=x;p=q;}return x; }merage中還有一個啟發模式,就是把深度小的集合合并到深度大的集合;
int merage(int b,int c){if(height(b)==height(c)){height(b)=height(c)+1;a[c]=b;}else if(height(b)<height(c)) a[b]=c;else a[c]=b; }

總結

以上是生活随笔為你收集整理的基础 并查集的全部內容,希望文章能夠幫你解決所遇到的問題。

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