n_m_d = "10 2 2" f_node = "5 3" tree = "1 1 1 2 3 3 4 5 5" n,m,d = [int(x) for x in n_m_d.split()] tree_gp = {x:set() for x in range(1,n+1)} tree_node = [int(x) for x in tree.split()] for i,node in enumerate(tree_node,2):     tree_gp[node].add(i)     tree_gp[i].add(node) f_node = [int(x) for x in f_node.split()] def bfs(tree_gp,node,d):     '''     :param tree_gp:tree_map     :param d: max layer     :return: list layer < d     '''     res = set()     queue = []     queue.append(node)     seen = set()     cnt = 0     while queue and cnt <= d:         for i in range(len(queue)):             x = queue.pop(0)             res.add(x)             for child in tree_gp[x]:                 if child not in seen:                     queue.append(child),seen.add(child)         cnt += 1     return res res_set = { _ for _ in range(1,n+1)} for i in range(m):     print(f_node[i])     print(bfs(tree_gp,f_node[i],d))     res_set = res_set & bfs(tree_gp,f_node[i],d) print(len(res_set)) 事后想了想,也不难啊,放到图里面做bfs,当时这么就没出来呢
点赞 1

相关推荐

程序员花海_:项目描述写的太少了 多写一点 先写业务 再写技术
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务