python第二个结点超时,有大佬看看怎么优化吗
查看原帖
python第二个结点超时,有大佬看看怎么优化吗
1070455
wslolo楼主2023/10/16 16:17
import collections
m=int(input())
fa=collections.defaultdict(int)
def find(x):
    if x not in fa:
        fa[x]=x
        return x
    elif fa[x]==x:
        return x
    else:
        fa[x]=find(fa[x])
        return fa[x]
def union(a,b):
    fa[find(a)]=find(b)
ans=[]
for i in range(m):
    fa=collections.defaultdict(int)
    n=int(input())
    ls=[]
    ret=True
    for j in range(n):
        tp=input().split()
        if tp==[]:
            tp=input().split()#输入中有空行
        if not ret:
            continue
        a,b,k=int(tp[0]),int(tp[1]),int(tp[2])
        if k==1:
            if find(a)!=find(b):
                union(a,b)
        else:
            if find(a)==find(b):
                ret=False
            ls.append((a,b))
    for a,b in ls:
        if not ret:
            break
        if find(a)==find(b):
            ret=False
            break
    if ret:
        ans.append("YES")
    else:
        ans.append("NO")
for a in ans:
    print(a)
2023/10/16 16:17
加载中...