HDU ACM 1232 暢通工程(簡單的並查集)

2021-06-13 21:56:31 字數 749 閱讀 6775

/**********************************

題目大意:把是城鎮之間道路的城鎮有放到一組,n個城鎮可以分成幾組,並輸出總組數-1(即只有當全部城鎮在乙個組時,才不需要再建道路);

題目解析:運用並查集把有道路的城鎮合併到一組,最後遍歷陣列father[i],檢視i根結點是否為他自己;

錯誤分析:1. 最主要的是題目已經知道總城鎮數,應該把總城鎮數運用引數傳遞給初始化的函式init()

2.這題與hdu 1213題相似,只需把輸出結果變成rank1-1即可;

*********************************/

#include#includeusing namespace std;

#define m 1005

int father[m],rank[m];

//father[i]為i的父結點,rank[i]為i所屬集合的總元素數

void init(int n)

//初始化,注意此時的函式init()有引數傳遞

}int find(int x)

//查詢根結點

void union(int x,int y)

// 合併

}int main()

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

//遍歷陣列,找出有多少個子集合

printf("%d\n",rank1-1);

}return 0;

}

hdu acm 1874 暢通工程續

problem description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距...

hdu1232 暢通工程

還是並查集,不過我覺得最後判斷最少路徑自己處理的麻煩了,得去看看大神 code id yueqiq prog numtri lang c include include include include include include include include include include i...

HDU 1232 暢通工程

題目大意 中文題 解題思路 最基礎的並查集,注意一點,雖然路徑優化了,但pre i 不一定就是最上級,所以最後查詢還得用find函式。該部落格詳盡的多 ac include include using namespace std int n,m,t1,t2,pre 1005 setse intfin...