Python超时,求优化
查看原帖
Python超时,求优化
1169793
_Simplest楼主2024/7/9 19:24

Python最后两个样例超时,看能否优化

import sys
sys.setrecursionlimit(100000)
n = int(input())
N, M = n + 10, n * 20
g = [[] for _ in range(N)]
d = [0 for _ in range(N)]
son, cnt = [[0 for _ in range(2)] for _ in range(M)], 0


def dfs(u, fa):
    for j, w in g[u]:
        if j != fa:
            d[j] = d[u] ^ w
            dfs(j, u)


def insert(x: int):
    global cnt
    p = 0
    for i in range(30, -1, -1):
        u = (x >> i) & 1
        if not son[p][u]:
            cnt += 1
            son[p][u] = cnt
        p = son[p][u]


def get_Max(x: int):
    ans, p = 0, 0
    for i in range(30, -1, -1):
        u = (x >> i) & 1
        if son[p][not u]:
            ans += 1 << i
            p = son[p][not u]
        else:
            p = son[p][u]
    return ans


for _ in range(n - 1):
    a, b, c = map(int, sys.stdin.readline().strip().split())
    g[a].append([b, c])
    g[b].append([a, c])
dfs(1, -1)
for i in range(1, n + 1):
    insert(d[i])
Max = 0
for i in range(1, n + 1):
    Max = max(Max, get_Max(d[i]))
print(Max)

2024/7/9 19:24
加载中...