【python】创建带权无向连通图

问题:要用Prim算法求最小生成树,得有一个带权连通图,求问如何用这段码创建如下图的带权连通图

img

利用以下代码创建
import copy
from typing import List

MAXV = 10  # 最多顶点个数
INF = 0x3f3f3f3f  # (十六进制)表示∞

# 设计邻接矩阵类
class MatGraph:
    def __init__(self, n=0, e=0):
        self.edges = []
        self.vexs = []
        self.n = n
        self.e = e

def CreateMatGraph(self,a,n,e): # 创建邻接矩阵
    self.n = n  # 顶点数n
    self.e = e  # 边数e
    self.edges = copy.deepcopy(a)  # 深复制到邻接矩阵a

def DisMatGraph(self):  # 输出图的邻接矩阵
    for i in range(self.n):
        for j in range(self.n):
            if self.edges[i][j] == INF:
                print("%4s"%("∞"),end='')
            else:
                print("%5d"%(self.edges[i][j]),end='')
        print()

# Prim算法构建最小生成树
def Prim(g,v):
    global min, k
    lowcost = [0]*MAXV  # 建立数组:最小的权值
    closest = [0]*MAXV  # 建立数组:最近的点
    for i in range(g.n):  # 给lowcost[]和closest[]置初值,i是某顶点的编号
        lowcost[i] = g.edges[v][i]  # lowcost[]记录边的权值
        closest[i] = v  # closest[]记录最近顶点
    for i in range(1,g.n):  # 找出最小生成树的所有边
        min = INF  # 用INF表示未连接(权值无穷大)
        k = -1  # 用-1表示边不存在
        for j in range(g.n):  # 找出离(选取顶点集)U最近的顶点k
            if lowcost[j] != 0 and lowcost[j]<min:  # 若选取边的权值小于对应顶点列表中的值
                min = lowcost[j]  # 则更新数组(最短路径)值为该边的权值
                k = j  # k记录最小顶点的编号
    print("(%d,%d):%d"%(closest[k],k,+min),end='')  # 输出最小生成树的边
    lowcost[k] = 0  # 更新lowcost数组以记录改变
    for j in range(g.n):  # 寻找最小距离数组
        if lowcost[j] != 0 and g.edges[k][j] < lowcost[j]:  # 判断最小权值
            lowcost[j] = g.edges[k][j]  # 修改lowcost
            closest[j] = k  # 修改closest


if __name__ == '__main__':