Day7 prim的堆優化

2021-08-20 14:21:07 字數 696 閱讀 3859

複雜度:o(mlogm) (m為邊數),未優化時複雜度為o(n^2)

首先把1這個點標記為已訪問,把它所連的邊都加到優先佇列裡邊,然後每次從優先佇列頂端拿終點未訪問的邊,把終點標記成已訪問,把終點連的邊放進優先佇列,直到無邊可拿或所有點均訪問過為止。

**:參考別人的**..   

#include#include #include #include #include #include #include #include using namespace std;

const int maxn = 1000005;

struct edge

friend bool operator<(edge a,edge b)

};priority_queuepq;

vectorgraph[maxn];

bool vis[maxn];

int n,m;

int main()

while(!pq.empty()) pq.pop();

for(int i=0; ivis[1] = true;

int left = n;

int ans = 0;

while((!pq.empty()) && left)}}

printf("%d\n",ans);

return 0;

}

最小生成樹 prim演算法的堆優化

如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出包含乙個數,即最小生成樹...

prim演算法 標準版與堆優化(python實現)

模板 最小生成樹 prim演算法 這道題目主要是考驗我們對prim演算法的熟練程度,prim演算法的主要思想就是找乙個起始點,就是一直尋找乙個最小邊,當新增了m 1條邊後停止新增,然後輸出總和.code n,m map int,input split flag 0 for i in range n ...

索引堆的優化

之前的change函式如下 希望將索引為i的元素的值修改為 newitem void change int i,item newitem 優化思路 實現 include include include include include include include include using nam...