我也后来做了下,思路应该是没什么问题,但我这个有很多重复计算。楼上的那个比我好 from collections import defaultdict n,m,d = map(int,input().split()) spec = [int(c) for c in input().split()] lis = [int(c) for c in input().split()] # nei为节点邻接表 neighbor = defaultdict(list) for i in range(n-1):     neighbor[i+2].append(lis[i])     neighbor[lis[i]].append(i+2) def bfs(node0):     queue=[]     visited=set()     queue.append(node0)     visited.add(node0)     dis=[0 for _ in range(n+1)]     step=0     while queue:         node=queue.pop()         step+=1         for each in neighbor[node]:             if each not in visited:                 queue.append(each)                 visited.add(each)                 dis[each]=step             #print(queue)     return dis count=0 for i in range(1,n+1):     dis=0     for point in spec:         dis=max(bfs(point)[i],dis)     if dis<=d:         count+=1 print(count)   
点赞 评论

相关推荐

不愿透露姓名的神秘牛友
07-24 13:39
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务