這是乙個簡單的並查集運用,每次案例開始,我們按照輸入的n城市個數初始化:
初始化過程為,1到n的父親節點為本身,1到n的rank深度為0,但是我們把rank[0]
作為要修建的道路數,初始化為n-1,比如我們初始化n為3的情況,rank[0]=2,一開始只要
修建兩條路.....然後就是按照m輸入m組聯通城市,每次就和並一次,合併最後,我們就把
rank[0]減一,因為合併了兩個城市之後,道路就少了一條。
基於這個題目,推薦乙個一樣的題目,就是poj2524 宗教的個數
這個鏈結是關於並查集的學習,我是乙個小白,開始就是看了這裡
下面是**
#includeint father[1005];//記錄父親節點
int rank[1005];//記錄次節點的深度
void init(int n)
rank[0]=n-1;
}int find(int x)
void union(int x,int y)
if(rank[x] == rank[y])
rank[y]++;
rank[0]--;//合併了一次,道路數就減一
}int main()
printf("%d\n",rank[0]);
} return 0;
}
Hdu1232暢通工程 解題報告
並查集 將編號分別為1到n的n個物件劃分為不相交集合,在每個集合中,選擇其中某個元素代表所在集合。主要有兩個操作 1 合併兩個集合,2 查詢某元素屬於哪個集合。下面是利用並查集求解hdu 1232 暢通工程 比用dfs,bfs搜尋大大提高了時間效率。include include using nam...
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...