最小生成樹 prim

2022-05-19 23:24:18 字數 966 閱讀 4166

第一行包含兩個整數n、m,表示該圖共有n個結點和m條無向邊。(n<=5000,m<=200000)

接下來m行每行包含三個整數xi、yi、zi,表示有一條長度為zi的無向邊連線結點xi、yi

輸出包含乙個數,即最小生成樹的各邊的長度之和;如果該圖不連通則輸出orz

寫部落格時發現好像沒判圖不連通情況,但是資料好像沒有這種,可以過

用了小根堆優化,但好像更慢了??(強迫症患者表示必須小根堆優化下)

#include#include

#include

#include

#define ri register int

#define u int

#define nn 5005

#define mm 200005

namespace

fast

while(s>='

0'&&s<='9'

)

return

x; }

}using fast::in

;using

std::queue;

using

std::pair;

namespace

all a[mm

<<1

]; inline

void add(const u &x,const u &y,const u &z)

u ans,num,vt[nn];

typedef pair

p; std::priority_queue

, std::greater>q;

void

prim()}}

inline

void

solve()

prim();

printf("%d

",ans);

}}int

main()

最小生成樹 Prim

include stdio.h include stdlib.h include io.h include math.h include time.h define ok 1 define error 0 define true 1 define false 0 define maxedge 20 ...

最小生成樹 prim

演算法模型 由任意乙個頂點開始 將此頂點存入s集,剩餘頂點存入t集合 每次遍歷頂點,取一條能夠連線s與t最短邊e,直到所有頂點全部加入s include include define inf 1 30 int n,m,vis 110 low 110 int map 110 110 int init ...

最小生成樹 PRIM

這個是有關普利姆的演算法,從乙個點出發,找出與這個點相連的所有點的對應的權值最小的那個,然後再把這個點從集合中劃掉。模板如下 include include define inf 0xfffff define max 2005 using namespace std int map max max ...