/**********************************
題目大意:把是城鎮之間道路的城鎮有放到一組,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...