並查集專題 好朋友 (求連通塊個數)

2021-08-25 13:53:43 字數 777 閱讀 7489

5 6

3
求解無向圖的連通塊數目。並查集模板題。

最後統計合併後,有多少個不同的集合就可以。

#include #include #include using namespace std;

const int nmax=110;

int father[nmax];//存放父親節點

bool isroot[nmax]; //記錄某個節點是否作為某一集合的根節點

int findfather(int u)

} void union(int u,int v)

}void init(int n)

} int main(int argc, char** argv)

for(int i=1;i<=n;i++)

for(int i=1;i<=n;i++)cout<

int ans=0;

for(int i=1;i<=n;i++)

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

} return 0;

}

並查集 好朋友

天勤書上一道題,很簡潔的展現了並查集的思想。大致意思是x和y是和朋友,xx和yy是好朋友.要你分組使組內都是好朋友,組外都不是好朋友。資料量比較小,很水,路徑壓縮不考慮也沒問題。includeusing namespace std define max 200 int father max bool...

求連通塊(並查集實現)

連通塊可以理解為無向圖中有幾個連通的點集,那麼這個過程與並查集的原理就極其相似了,將點集看作並查集的祖先和他的後代們,相互連通的點就放在同一祖先下,這樣只需要查詢共有幾個祖先即可。下面來一道例題深入理解下 jsoi2008 星球大戰 當我們加入乙個點時,先假設又加入乙個單獨的連通塊,然後再掃一下與它...

並查集(求朋友圈的個數)

有如下題目 已知有n個人和m對好友關係 存於陣列r 如果兩個人是直接或間接的好友 好友的好友的好友 則認為他們屬於同乙個朋友圈,請寫程式求出這n個人裡一共有多少個朋友圈。假如 n 5 m 3 r 表示有5個人,1和2是好友,2和3是好友,4和5是好友,則1 2 3屬於乙個朋友圈,4 5屬於另乙個朋友...