E题python dfs递归过不了
提示异常退出,是因为python递归上限问题吗?python是不是天生大劣势啊...
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=76241786
from math import inf
from collections import defaultdict
n = int(input())
g = defaultdict(list)
s = 0
for _ in range(n - 1):
u, v = list(map(int, input().split(" ")))
g[u].append(v)
g[v].append(u)
s += abs(u - v)
ans = inf
def f(node, parent):
global ans
children_nodes = [child for child in g[node] if child != parent]
if not children_nodes:
return 0
children_values = [f(child, node) for child in children_nodes]
to_add = [abs(node - child) for child in children_nodes]
for i, v in enumerate(children_values):
edge = to_add[i]
ans = min(ans, abs(v - (s - edge - v)))
return sum(children_values) + sum(to_add)
f(1, -1)
print(ans)
