Aランクレベルアップメニューのアイコン
りんご拾い(情報を持ちながらの移動) Python3編(paizaランク B 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

頂点 1 からスタートし、あなたは一直線であるグラフを後戻りせずに、各頂点に置かれたりんごを拾いながらたどります。

グラフの頂点・辺・各頂点のりんごの数についての情報が与えられるので、
あなたが頂点 1 から i 頂点分進んだ時に持っているりんごの数 S_i を求めてください。

例として、次のような入力が与えられた際の移動のイメージは次の画像の通りです。

なお、このグラフには、多重辺や自己ループはないものとします。

5
1 2
2 4
4 5
5 3
3
1
1
2
2






入力される値

N   
a_1 b_1
...
a_(N-1) b_(N-1)
A_1
...
A_N


・ 1 行目には、グラフの頂点の数 N が与えられます。
・ 続く N-1 行では、各辺の両端の頂点 a_i , b_i が与えられます。(1 ≦ i ≦ N-1)
・ 続く N 行では、各頂点にあるりんごの数 A_j が与えられます。 (1 ≦ j ≦ N)


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

N 行の出力

・ 頂点 1 から k 頂点分進んだ時に持っているりんごの数 S_k を出力してください。(0 ≦ k ≦ N-1)

S_0
...
S_(N-1)

条件

すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≦ N ≦ 100
・ 1 ≦ a_i , b_i ≦ N
・ 0 ≦ A_i ≦ 100

入力例1

3
1 3
2 3
5
1
7

出力例1

5
12
13

入力例2

20
19 6
18 5
16 4
14 12
13 2
17 18
5 8
4 7
2 14
15 16
1 17
11 20
8 15
6 11
12 9
7 13
9 3
20 10
3 19
99
91
86
44
85
51
51
58
82
94
77
61
68
90
41
14
97
82
65
18

出力例2

99
196
278
363
421
462
476
520
571
639
730
820
881
963
1049
1114
1165
1242
1260
1354

問題一覧へ戻る

  1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Aランクレベルアップメニュー(言語選択)
  4. 問題一覧 Python3編
  5. りんご拾い(情報を持ちながらの移動) Python3編
ページの先頭へ戻る