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])
#笔试#