2023.4.23 小红书笔试

第二题做的dfs,怎么都调不对,有没有大佬帮忙看看

n, k = (int(x) for x in input().split())
colors = input()


edges = [[] for _ in range(n)]
for _ in range(n-1):
    u, v = (int(x) for x in input().split())
    u, v = u-1, v-1
    edges[u].append(v)
    edges[v].append(u)


cnt = [-1] * n
def dfs(u, f=-1):
    tmp = 0
    for v in edges[u]:
        if v != f:
            tmp += dfs(v, u)
    if (f == -1 or colors[f] == 'W') and colors[u] == 'R':
        cnt[u] = tmp + 1
    if colors[u] == 'R':
        return tmp + 1
    else:
        return 0


# search
dfs(0)
ans = [x for x in cnt if x != -1]
ans.sort(reverse=True)
# print(cnt)
# print(ans)


if len(ans) < k:
    print(-1)
else:
    print(ans[k-1])

#笔试#
全部评论

相关推荐

07-09 18:28
门头沟学院 Java
写着提前批,结果还要实习4个月以上???
程序员牛肉:这种不用看,直接投了,面试的时候问对应的HR就行。有可能他们是直接复制的暑期实习的模板。
点赞 评论 收藏
分享
真烦好烦真烦:豆包润色了自己没看看吗,再说了,都说豆包是愚蠢且勤快的大学生,ds才是聪明的研究生,怎么敢让豆包写论文的
你们的毕业论文什么进度了
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务