首页 > 编程语言 > 详细

树算法笔记(三):Prim最小生成树

时间:2020-03-08 16:39:05      阅读:70      评论:0      收藏:0      [点我收藏+]

写了一坨跟狗屎一样的代码,有时间重写

data=‘‘‘2 4 11
3 5 13
4 6 3
5 6 4
2 3 6
4 5 7
1 2 1
3 4 9
1 3 2‘‘‘

lines=data.split("\n")
for i,line in enumerate(lines):
    lines[i]=list(map(int,line.split(" ")))

adj=[[-1]*7 for i in range(7)]
for line in lines:
    adj[line[0]][line[1]]=line[2]
    adj[line[1]][line[0]]=line[2]

# for x in range(7):
#     for y in range(7):
#         if adj[x][y]==-1:
#             adj[x][y]=float("inf")

dis=[float("inf") for i in range(7)]
dis[1]=0
vertex=[i for i in range(1,7)]
path=[1]
path_value=[0]

def dfs(v):
    if len(path)==6:
        return
    for y,e in enumerate(adj[v]):
        if e!=-1 and e<dis[y]:
            dis[y]=e
    
    minx=float("inf")
    mini=0
    for i in range(7):
        if dis[i]!=0 and dis[i]!=float("inf") and i not in path and dis[i]<minx:
            minx=dis[i]
            mini=i
    path.append(mini)
    path_value.append(minx)
    dfs(mini)
    
        
dfs(1)
print(path,path_value)
    
    

 

树算法笔记(三):Prim最小生成树

原文:https://www.cnblogs.com/shitianfang/p/12442601.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!