求最小生成樹 Prim演算法) 1075

2021-08-03 09:54:40 字數 1258 閱讀 8854

description

求出給定無向帶權圖的最小生成樹。圖的定點為字元型,權值為不超過100的整形。在提示中已經給出了部分**,你只需要完善prim演算法即可。

input

第一行為圖的頂點個數n

第二行為圖的邊的條數e

接著e行為依附於一條邊的兩個頂點和邊上的權值

output

最小生成樹中的邊。

sample input

abcdef

a b 6

a c 1

a d 5

b c 5

c d 5

b e 3

e c 6

c f 4

f d 2

sample output

(a,c)(c,f)(f,d)(c,b)(b,e)

**

#include

#include

#include

using

namespace

std;

typedef

struct

graph;

typedef

struct

mincost;

typedef

struct

edge;

typedef

struct

f;void create(graph &g, int n, int e)

for (k = 0; k< e; k++)

g.n = n;

g.e = e;

}#define inf 32767

void prim(graph &g, int v)

for (i = 1; i < g.n; i++)

}cout

<< '('

<< g.data[closest[k]] << ','

<< g.data[k] << ')';

lowcost[k] = 0;

for (j = 0; j < g.n; j++)

if (g.edge[k][j] && g.edge[k][j] < lowcost[j])

}}int main()

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

Prim演算法求最小生成樹

cost i j 存i和j之間的距離,vis i 記錄i點是否被訪問,lowc j 存所有與j點連線的邊的最小的權值。每次找最小的lowc j 然後。最小生成樹 int prim int cost maxn int n 點是0 n 1 if minc inf return 1 原圖不連通 ans m...

Prim演算法求最小生成樹

樸素prim演算法 1 距離初始化成正無窮 2 n次迭代 找到集合外距離最近的點,賦值給t 3 用t更新其他點到集合的距離 跟狄傑斯塔拉不一樣,狄傑斯塔拉是跟原點的距離 點與集合所有點距離最短的點 st t true 給定乙個n個點m條邊的無向圖,圖中可能存在重邊和自環,邊權可能為負數。求最小生成樹...