python - 找到最大的偶数子树,python
问题描述
我有一个如下输入,第一行是节点数(n),n下一个数字是权重,n-1下一个数字是边,
6
9
3
6
7
8
2
2 1
3 1
4 2
5 3
6 3
这是我的代码
def find_children(node_N,N,edges):
children = []
for m in range(N-1):
if edges[m][1] == node_N:
children.append(edges[m][0])
children += find_children(edges[m][0],N,edges)
return children
from itertools import groupby
def main():
N = int(input())
edges = []
data = []
for i in range(N):
V = int(input())
data.append(V)
for x in range(N-1):
L = str(raw_input())
u , v = L.split()
edges.append([int(v), int(u)])
# create tree
tree = []
for n in range(N):
tree.append([n+1])
for n in range(N):
tree[n].append(find_children(n+1,N,edges))
rr =[]
tr = []
for d in tree:
gg = []
gg.append(data[d[0]-1])
for dd in d[1]:
gg.append(data[dd-1])
rr.append(gg)
tr = [0] * len(rr)
for i, l in enumerate(rr):
counter = 0
for v in l:
if v % 2 == 0:
counter += 1
else:
tr[i] = max(counter, tr[i])
counter = 0
tr[i] = max(counter, tr[i])
print(max(tr))
main()
但它打印从根到叶的路径的最大偶数,并且不考虑其他状态,如何检查树中的所有路径。在这个例子中,最大的偶数子树是 3,
解决方案
推荐阅读
- c++ - std::unordered_map::rehash() 函数可以减少哈希冲突吗?
- excel - 重命名工作表给出“内存不足”;CurrentRegion 属性失败
- python - Python 检查对象是 ListProxy 还是 DictProxy
- drake-r-package - 使用 r_make() 为 drake 使用专用环境
- javascript - 如何在主详细信息中基于服务器对数据进行分组 - 角度
- node.js - 如何创建按分数和时间排序的排行榜?
- python - 基于列聚合 Python DF
- java - 运行 jar 文件时出现“发生 JNI 错误”
- excel - 将 HLookup 的多个结果存储在列表框中
- java - Hybris 重新声明关系