题解 | #小红的树#

小红的树

http://www.nowcoder.com/practice/66ab364d3fba487eb39bd3460fd484c0

n = int(input())
parents = list(map(int, input().split()))
# 树的表示
tree = [[] for _ in range(n+1)]
for i, p in enumerate(parents):
    i = i + 2
    tree[p].append(i)

WRs = input()
dp = [0] * (n + 1) 
for i, c in enumerate(WRs):
    if c == 'R':
        dp[i + 1] = 1

# 深度优先搜索
def dfs(i):
    if tree[i] == []:
        return 
    for k in tree[i]:
        dfs(k)
    for k in tree[i]:
        dp[i] += dp[k] # 累加所有子树的R个数
dfs(1)
q = int(input())
for i in range(q):
    x = int(input())
    print(dp[x])
全部评论

相关推荐

爱吃烤肠的牛油最喜欢...:50K是ssp了估计,ssp的人家多厉害都不用说,每年比例大概在百分之5左右
点赞 评论 收藏
分享
08-29 17:17
已编辑
门头沟学院
嗨害嗨我来了:张总:你们这些年轻人,这不是把我的爱好暴露了吗?
工作时那些社死瞬间
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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