並查集的應用

2021-06-14 16:35:47 字數 865 閱讀 3192

特點:

1,            都有乙個陣列儲存它的根節點

2,            用vis陣列儲存其是否訪問過

3,            如果cnt=1;說明該圖是連通的。連通圖中只有根節點的父節點是自身,cnt應該是1

解決的題目:

1,題目已經給了圖上頂點之間的關係,通過頂點之間的關係,求連通分量的個數

#include "stdio.h"

int bin[1002];

int ans=1;

int findx(int x)//找x的根結點

//通過兩點間的關係,構造一棵有根數

void merge(int x,int y)//使x指向y,合併x,y

int main()

for(count=-1, i=1;i<=n;i++)

if(bin[i] == i)

count++;

printf("%d\n",count);

}}2,可以求給定的圖中頂點的關係中,所有頂點間是否存在迴路問題。(如果兩個頂點的根節點相同,則這兩個頂點存在迴路)

1,判斷有無迴路

2,判斷是否連通

並查集的應用

並查集可以有很多應用。比如權值並查集或帶擴充套件域的並查集,可以來維護一些可傳遞的關係。當然,並查集最直接的應用,則是來維護集合的的連通關係。第一題題意 給出一幅圖,以及一系列操作,每次操作刪去乙個點,及這個點相關的所有邊,並輸出刪點之後的連通塊個數。思路 這道題把過程倒著來就好了,可以看成建圖的過...

並查集及其應用

並查集 union find sets 是一種簡單的用途廣泛的集合.並查集是若干個不相交集合,能夠實現較快的合併和判斷元素所在集合的操作,應用很多,如其求無向圖的連通分量個數 最小公共祖先 帶限制的作業排序,還有最完美的應用 實現kruskar演算法求最小生成樹。其實,這一部分 演算法導論 講的很精...

並查集及其應用

並查集 union find sets 是一種簡單的用途廣泛的集合.並查集是若干個不相交集合,能夠實現較快的合併和判斷元素所在集合的操作,應用很多,如其求無向圖的連通分量個數 最小公共祖先 帶限制的作業排序,還有最完美的應用 實現kruskar演算法求最小生成樹。其實,這一部分 演算法導論 講的很精...