並查集的優化措施

2021-07-30 14:59:58 字數 534 閱讀 2865

#include#include#include#include#define maxn 10000

int a[maxn];

int find(int x)

void union(int x,int y)

int main()

這是基礎的並查集,效率略低,如果樹的高度過高就會很慢

#include#include#include#include#define maxn 1000

typedef int elementtype;

typedef int setname;

typedef elementtype settype[maxn];

void union(settype s,setname root1,setname root2) //這裡假設root1 , root2均為根不同集合的根節點,根節點裡的數字代表集合的個數

{ if(s[root1]

思路出自中國大學mooc陳越何欣銘的資料結構課堂講課

kruskal 並查集優化

這兩天搞dp搞的快暴了,想學學網路流。拿過算導來一看,最短路還沒整完呢。寫了乙個用並查集優化的kruskal演算法,並查集是用非遞迴的狀態壓縮實現的。詳見 kruskal沒有用堆優化,不是我不想,而是實在不會。所以直接用sort按權值排了下序,時間複雜度o n n logn my code incl...

並查集 並查集

本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...

並查集及優化 C

include include include include using namespace std 查詢快,但是合併差 class unionfind1 int find int p bool isconnected int p,int q void union int p,int q 基於2的...