kruskal 最小生成樹

2021-04-17 19:00:35 字數 942 閱讀 4974

#include

#include//產生隨機數組用

#include//同上

#include

using namespace std;

// 1) 帶權邊的類myarc:

class myarc

bool operator < (const myarc& arc)

};myarc::myarc(int beginvex,int endvex,int weight):m_beginvex(beginvex),m_endvex(endvex),m_weight(weight)

{}//2) 表示圖的鄰接矩陣類graph:

class graph

;//建構函式

graph::graph(int vexnum)

void insert(const myarc& arc);//邊按權值插入佇列中合適位置,

void insertgraph(const graph &graph);//將圖的連通分量插入佇列

myarc pop();

};//邊出隊

myarc myqueues::pop()

//邊按權值插入佇列中合適位置,

void myqueues::insert(const myarc& arc)

m_list.insert(pos,arc);

}//將圖的連通分量插入佇列

void myqueues::insertgraph(const graph &graph)

{for(int i=0;imy_list;

my_list.push_back(arc.m_beginvex);

int *ps=new int[graph.m_vexnum];

for(int i=0;i>vex;

int *matrix=new int[vex*vex];

cout<

最小生成樹Kruskal

最小生成樹有兩個特點,乙個是保證了所有邊的和是最小值,另乙個是保證了所有邊中的最大值最小。struct edge bool friend operator edge a,edge b 構邊 vectoredge int id max int mini void initial void input ...

最小生成樹(kruskal)

kruskal演算法 1 記graph中有v個頂點,e個邊 2 新建圖graphnew,graphnew中擁有原圖中相同的e個頂點,但沒有邊 3 將原圖graph中所有e個邊按權值從小到大排序 4 迴圈 從權值最小的邊開始遍歷每條邊 直至圖graph中所有的節點都在同乙個連通分量中 if 這條邊連線...

最小生成樹(Kruskal)

在一張圖上有n個點,點與點之間的連線的花費都已經告訴你了,請你設計一下,如果解決這個 最小生成樹 的問題。輸入首先輸入乙個數字n 0 n 100 然後輸入乙個n n的矩陣 其中第i行第j列的數字k表示從點i到點j需要的花費。輸出乙個數字,最少需要多少花費才能使得整張圖任意兩點都直接或者間接連通 也就...