最小生成树Prim算法贪心法python实现
def update(a,b, nodepair, G, n):
if b == 0:
return nodepair
nodepair[b][0] = a
nodepair[b][1] = G[a][b]
return nodepair
def prim(G, n):
INF = 100000
visit = [-1] * n
nodepair = [[-1, INF] for i in range(n)]
visit[0] = 1
print(0, nodepair[0])
nodepair = update(0,0, nodepair, G, n)
for key in range(1,n):
tmp = INF
for key1 in range(n):
for key2 in range(n):
if visit[key1]==1 and visit[key2]==-1:
if G[key1][key2] != 0:
if G[key1][key2] < tmp:
a = key1
b = key2
tmp = G[key1][key2]
visit[b] = 1
nodepair = update(a,b, nodepair, G, n)
print(b, nodepair[b])
return nodepair
if __name__ == '__main__':
Glist = input().split('-')
G = []
for item in Glist:
row = item.split(',')
g = [int(i) for i in row]
G.append(g)
n = len(G)
prim(G, n)