洛谷3366-最小生成树-python-(kruskal+并查集)

这篇博客探讨了使用Python实现克鲁斯卡尔算法时遇到的时间效率问题,特别是对于大量数据导致的超时错误。作者分享了一段代码,通过全局变量和排序优化来尝试解决TLE(Time Limit Exceeded)问题,但仍然存在不足。文章最后指出,当无法找到合适的解决方案时,代码会返回'orz'作为结果。
摘要由CSDN通过智能技术生成

TLE3个点的代码,没办法,python循环太慢了。

#克鲁斯卡尔
global n,m
global side
global parent
def find(x):
    while parent[x]!=-1:
        x=parent[x]
    return x
def kruskal():
    ans=0
    #找到n-1条边就退出循环
    count=0
    for i in range(m):
        u,v,w=side[i][0],side[i][1],side[i][2]
        fa,fb=find(u),find(v)
        if fa!=fb:
            parent[fa]=fb
            ans+=w
            count+=1
        if count==n-1:
            break
    if count!=n-1:
        return -1
    else:
        return ans
n,m=map(int,input().split())
side=[[] for _ in range(m)]
parent=[-1 for _ in range(n+1)]
for i in range(m):
    x,y,z=map(int,input().split())
    side[i]+=[x,y,z]
side.sort(key=lambda x:x[2])
ans=kruskal()
if ans==-1:
    print("orz")
else:
    print(ans)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值