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