問題はこれです
https://atcoder.jp/contests/abc138/tasks/abc138_d
解答1 (WA)
python3
1 2import sys 3 4def main(): 5 n, q = [int(x) for x in sys.stdin.readline().split()] 6 AB = [[] for _ in range(n+1)] 7 for _ in range(n-1): 8 a, b = [int(x) for x in sys.stdin.readline().split()] 9 AB[a].append(b) 10 11 ans = [0 for _ in range(n+1)] 12 for _ in range(q): 13 p, x = [int(x) for x in sys.stdin.readline().split()] 14 ans[p] += x 15 16 for a in range(1, n): 17 for b in AB[a]: 18 ans[b] += ans[a] 19 20 print(' '.join(map(str, ans[1:]))) 21 22if __name__ == "__main__": 23 main() 24
解答2 (AC)
python3
1 2import sys 3 4def main(): 5 n, q = [int(x) for x in sys.stdin.readline().split()] 6 AB = [[] for _ in range(n+1)] 7 for _ in range(n-1): 8 a, b = [int(x) for x in sys.stdin.readline().split()] 9 AB[a].append(b) 10 AB[b].append(a) 11 # 無向グラフとして考える 12 13 ans = [0 for _ in range(n+1)] 14 for _ in range(q): 15 p, x = [int(x) for x in sys.stdin.readline().split()] 16 ans[p] += x 17 18 stack = [1] 19 parent = [0 for _ in range(n+1)] 20 while stack: 21 x = stack.pop() 22 for y in AB[x]: 23 if y != parent[x]: # yがxの親でなければ 24 parent[y] = x # xがyの親 25 stack.append(y) 26 ans[y] += ans[x] 27 28 29 print(' '.join(map(str, ans[1:]))) 30 31if __name__ == "__main__": 32 main() 33 34
一応解答2でACはしたのですが最初解答1でWAだったのが府に落ちず、考えても何がいけないのかよくわかりませんでした
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/17 08:29