特點:
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演算法求最小生成樹。其實,這一部分 演算法導論 講的很精...