優先佇列是由堆組成的,所以當我們使用優先佇列對prim進行優化時,就把這種優化叫做堆優化。
它的演算法核心思想就是每次向後找邊,每個pair存的都是下乙個點,以及邊權。我們對於已經走過的點就避開,這樣就不會形成環。
因為我們已知的點是標記過的,我們只要下乙個點不走已知的點肯定不會形成環路。因為第乙個點已經標記過,所以我們之後只用做n-1次,找n-1個點就可以了,順便找了n-1條邊,這時候一顆最小生成樹就建成了。
對於那pair我們把權值放在第一位,然後呼叫系統的公升序就可以了,就不用自己寫排序的函式了。因為優先佇列對pair進行排序的時候預設是按照第乙個數字進行排序的。
#include
#include
#include
#include
using namespace std;
const
int maxn =
100010
;typedef pair<
int,
int> p;
vectorvec[maxn]
;int vis[maxn]
;int
main()
priority_queue, greater> pq;
vis[1]
=1;for
(int i =
0; i < vec[1]
.size()
;i++
) pq.
push
(vec[1]
[i])
;int ans =0;
while
(!pq.
empty()
)for
(int i =
0; i < vec[now.second]
.size()
;i++)}
printf
("%d\n"
, ans)
;return0;
}
hihocoder 1105 題外話 堆
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述小ho有乙個糖果盒子,每過一段時間小ho都會將新買來的糖果放進去,同時他也會不斷的從其中挑選出最大的糖果出來吃掉,但是尋找最大的糖果不是一件非常簡單的事情,所以小ho希望能夠用計算機來他幫忙計算這個問題!輸入每個測試點 輸...
JVM堆記憶體調優
堆大小設定 jvm 中最大堆大小有三方面限制 相關作業系統的資料模型 32 bt還是64 bit 限制 系統的可用虛擬記憶體限制 系統的可用物理記憶體限制。32位系統下,一般限制在1.5g 2g 64為作業系統對記憶體無限制。我在windows server 2003 系統,3.5g物理記憶體,jd...
Oracle效能調優 堆組織表和索引組織表區別
hot和iot的起源堆組織表的儲存速度因為不用考慮排序,所以儲存速度會比較快。但是要查詢符合某個條件的記錄,就必須得讀取全部的記錄以便篩選。而這個時候為了加快查詢速度,索引就出現了,索引是針對少量特定欄位的值拿出來進行排序儲存,並記錄在表中的位置,而因為索引是有序的,所以就會很容易通過索引查詢到具體...