← 返回题库
初级

最小生成树

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
def solve(edges):
    edges_list = []
    for e in edges.split(';'):
        u, v, w = map(int, e.split(','))
        edges_list.append((w, u, v))
    edges_list.sort()
    parent = {}
    def find(x):
        if x not in parent:
            parent[x] = x
        if parent[x] != x:
            parent[x] = find(parent[x])
        return parent[x]
    total = 0
    for w, u, v in edges_list:
        pu, pv = find(u), find(v)
        if pu != pv:
            parent[pu] = pv
            total += w
    print(total)

示例

输入
solve('1,2,1;2,3,2;1,3,4')
期望输出
3
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码