hihoCoder 1109 堆優化的Prim

2021-09-10 16:38:54 字數 999 閱讀 7037

優先佇列是由堆組成的,所以當我們使用優先佇列對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的起源堆組織表的儲存速度因為不用考慮排序,所以儲存速度會比較快。但是要查詢符合某個條件的記錄,就必須得讀取全部的記錄以便篩選。而這個時候為了加快查詢速度,索引就出現了,索引是針對少量特定欄位的值拿出來進行排序儲存,並記錄在表中的位置,而因為索引是有序的,所以就會很容易通過索引查詢到具體...