求最小生成樹

2021-10-01 04:33:00 字數 1241 閱讀 4082

求最小生成樹現在我所學到的有兩種演算法:kruskal演算法以及prim演算法。

kruskal演算法

這個演算法實際上就是加邊法,每次選擇最小的邊加入集合(加入的邊不能構成迴路),直到把所有的節點都找到為止。

#include

#include

#include

using

namespace std;

const

int maxsize=

100;

struct node

;int

find

(int parent,

int nodes)

//找到nodes的根節點

bool

cmp(node a,node b)

//對node進行自定義排序

intmain()

}int s=-1

;for

(int i=

1;i)//初始化看看有多少邊}}

sort

(edge,edge+s+

1,cmp)

;//排序

int couns=0;

//統計已經遍歷的節點

for(

int i=

0;i<=s;i++)}

}}

prim演算法

**如下:

#include

#include

#include

using

namespace std;

const

int maxsize=

100;

const

int max=

100000

;int

getmin

(int lowcast,

int v,

int visi)

//找到從始節點到其他節點最小的那個權值返回,但是終點不能為已經訪問過的點

}return mis;

}void

prim

(int rode[maxsize]

[maxsize]

,int v)

for(

int i=

1;i}}

intmain()

}for

(int i=

0;i}prim

(rode,v)

;}

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 ...

Prim演算法求最小生成樹

本文參考 google 資料結構 c語言 prim演算法,求最小生成樹 include include 最小生成樹prim define max 65535 using namespace std struct graph int prim graph g flag 0 1 將0號結點加入集合s i...