#44842: 不信邪想用dfs解,結果最後一個測資就是過不了,有沒有大神可以幫忙一下(仍想堅持使用dfs...)


hansjiang1017@gmail.com (單純想出題所以在拚30%)

學校 : 不指定學校
編號 : 278037
來源 : [111.242.101.121]
最後登入時間 :
2024-12-21 15:52:26
c463. apcs 樹狀圖分析 (Tree Analyses) -- apcs | From: [111.242.101.121] | 發表日期 : 2024-12-21 16:44

def H(s):
    if len(tree[s]) == 0:
        h[s] = 0
    else:
        m = 0
        for v in tree[s]:
            H(v)
            m = max(m, h[v]+1)
        h[s] = m
        
n = int(input())
tree = [[0]]

is_root = [1 for _ in range(n+1)]
is_root[0] = 0

h = [0]*(n+1)

for _ in range(n):
    temp = list(map(int, input().split()))[1:]
    for n in temp:
        is_root[n] = 0 
    tree.append(temp)
root = is_root.index(1)

H(root)

print(root)
print(sum(h))

 
#44843: Re: 不信邪想用dfs解,結果最後一個測資就是過不了,有沒有大神可以幫忙一下(仍想堅持使用dfs...)


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [122.117.95.179]
最後登入時間 :
2024-12-12 21:48:20
c463. apcs 樹狀圖分析 (Tree Analyses) -- apcs | From: [122.117.95.179] | 發表日期 : 2024-12-21 21:25

也可以 dfs 啦.

不要從 root 開始往下走.

從每個節點出發, 遇到葉子就停止. 然後記下這個節點的深度.

下次再走到這個點, 直接 return 

用上面的方法

最後一個測資只有一條線

從 最後一個點往前訪問, 就可以解決.

 
ZeroJudge Forum