最小生成樹(求村落之間最小修哪幾條路能使耗資最小)

2022-07-16 23:27:16 字數 969 閱讀 4799

大佬的部落格

#include#include

#include

#include

#include

#include

#include

#include

#define maxn 200005

#define inf 1e8

using

namespace

std;

//普里姆演算法 o(n*n) 也可以用優先佇列儲存 o(n*logn)

int cost[1000][1000];//

記錄兩點間的權值

int mincost[10000];//

從集合x出發到每個頂點的最小權值

bool used[100000];//

頂點是否在集合中

int v;//

頂點數int

prim()

mincost[

0]=0

;

int res=0;//

求和while(true||1

)

if(s==-1)break;//

代表已經找不到能加入集合x的點了

used[s]=true;//

把s放入集合x中

res+=mincost[s];

for(int u=0;u)

}return

res;}//

kruskal演算法 o(n*logn) 算了貼部落格吧,,主要因為這個演算法made還要用並查集,我特麼懶得找並查集板子套了

struct

edge;

bool comp(const edge&)

求最小生成樹

求最小生成樹現在我所學到的有兩種演算法 kruskal演算法以及prim演算法。kruskal演算法 這個演算法實際上就是加邊法,每次選擇最小的邊加入集合 加入的邊不能構成迴路 直到把所有的節點都找到為止。include include include using namespace std con...

prim求最小生成樹

劉陽小同學的筆記 include include include include include include include include include include include using namespace std define mem a,b memset a,b,sizeof ...

kruskal求最小生成樹

kruskal求最小生成樹 include include using namespace std const int n 100010 int p n struct edge edges n int find int x int main sort edges,edges m for int i ...