23.8.13米哈游秋招笔试题记录
第一题
签到题easy
第二题
// 给出一颗有根树,树上有n个节点和n-1条边,边的距离为1. 根节点编号为1. // 根据上述构建出这棵有根树。 // 然后,进行任意次操作: // 操作内容:对于树的叶子节点添加一个叶子节点,新添加边长度也是1. // 问经过操作以后,使得这棵树中所有节点与根节点的距离不超过k的最大值是多少? // 输入n,k,以及各个边输出满足条件的节点个数 //4 2 //1 2 //1 3 //2 4 //输出 //5 import sys sys.setrecursionlimit(1000000000) n,k = list(map(int, input().split())) G = [[] for i in range(n)] for i in range(n-1): u,v = list(map(int, input().split())) G[u-1].append(v-1) G[v-1].append(u-1) def dfs(cur,depth,parent): if depth > k: return 0 ans = 1 if len(G[cur]) > 1 or parent == -1: for nei in G[cur]: if nei != parent: ans += dfs(nei,depth+1,cur) else: ans += max(0,k-depth) return ans print(dfs(0,0,-1))
其实就是求树满足要求的叶子节点个数每个叶子节点根据深度可以添加k-depth个节点。上面给出的是牛客看到的一位大佬比较简洁的代码@TaylorSwift13
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)