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])

#笔试#
全部评论

相关推荐

许愿ssp的咸鱼很不想泡池子:import python as pyhton
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务