D


私信TA

用户名:ALS1111

访问量:22109

签 名:

等  级
排  名 55
经  验 11377
参赛次数 0
文章发表 132
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

python-乘积最大
浏览:223
python-回文数
浏览:206
python-摆花摆花
浏览:143

解题思路:

并查集(秩+路径压缩)

用python运行依然超时,70分。


注意事项:


参考代码:

def find(x):  
    global fa  
  
    if x == fa[x]:  
        return x  
    else:  
        fa[x] = find(fa[x])  
        return fa[x]  
  
def merge(i,j):  
    global fa,rank  
  
    x = find(i)  
    y = find(j)  
    if rank[i] <= rank[j]:  
        fa[x] = y  
    else:  
        fa[y] = x  
  
    if rank[x] == rank[y] and x!= y:  
        rank[y] = rank[y]+1  
  
def f(n,m):  
      
    Rst = [0 for i in range(n+1)]  
    for i in range(m):  
        a,b,c = map(int,input().strip().split())  
        if a == 1:  
            merge(b,c)  
        elif a == 2:  
            for i in range(1,n+1):  
                if find(i) == find(b):  
                    Rst[i] = Rst[i]+c  
                      
    for i in range(1,n+1):  
        print(Rst[i],end=' ')  
      
      
if __name__ == '__main__':  
    n,m = map(int,input().strip().split())  
    fa = [i for i in range(n+1)]  
    rank = [1 for i in range(n+1)]  
    f(n,m)


 

0.0分

0 人评分

  评论区

  • «
  • »