結果
問題 | No.2949 Product on Tree |
ユーザー | rlangevin |
提出日時 | 2024-10-25 22:33:11 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 575 ms / 2,000 ms |
コード長 | 1,108 bytes |
コンパイル時間 | 331 ms |
コンパイル使用メモリ | 82,488 KB |
実行使用メモリ | 132,380 KB |
最終ジャッジ日時 | 2024-10-25 22:33:37 |
合計ジャッジ時間 | 25,383 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 38 ms
53,564 KB |
testcase_01 | AC | 37 ms
53,068 KB |
testcase_02 | AC | 37 ms
52,916 KB |
testcase_03 | AC | 478 ms
115,192 KB |
testcase_04 | AC | 456 ms
107,172 KB |
testcase_05 | AC | 474 ms
114,888 KB |
testcase_06 | AC | 486 ms
114,912 KB |
testcase_07 | AC | 466 ms
107,196 KB |
testcase_08 | AC | 495 ms
115,004 KB |
testcase_09 | AC | 472 ms
115,284 KB |
testcase_10 | AC | 469 ms
114,968 KB |
testcase_11 | AC | 512 ms
114,720 KB |
testcase_12 | AC | 486 ms
116,864 KB |
testcase_13 | AC | 491 ms
117,204 KB |
testcase_14 | AC | 499 ms
108,316 KB |
testcase_15 | AC | 482 ms
110,316 KB |
testcase_16 | AC | 491 ms
109,488 KB |
testcase_17 | AC | 525 ms
118,956 KB |
testcase_18 | AC | 515 ms
119,820 KB |
testcase_19 | AC | 539 ms
120,244 KB |
testcase_20 | AC | 518 ms
120,504 KB |
testcase_21 | AC | 556 ms
120,884 KB |
testcase_22 | AC | 500 ms
111,352 KB |
testcase_23 | AC | 486 ms
115,636 KB |
testcase_24 | AC | 512 ms
115,460 KB |
testcase_25 | AC | 484 ms
115,316 KB |
testcase_26 | AC | 510 ms
115,840 KB |
testcase_27 | AC | 490 ms
115,332 KB |
testcase_28 | AC | 483 ms
115,312 KB |
testcase_29 | AC | 505 ms
115,892 KB |
testcase_30 | AC | 487 ms
115,332 KB |
testcase_31 | AC | 504 ms
115,960 KB |
testcase_32 | AC | 502 ms
116,740 KB |
testcase_33 | AC | 511 ms
119,300 KB |
testcase_34 | AC | 529 ms
120,256 KB |
testcase_35 | AC | 535 ms
120,432 KB |
testcase_36 | AC | 541 ms
121,084 KB |
testcase_37 | AC | 532 ms
124,016 KB |
testcase_38 | AC | 530 ms
120,952 KB |
testcase_39 | AC | 535 ms
122,380 KB |
testcase_40 | AC | 528 ms
125,436 KB |
testcase_41 | AC | 575 ms
123,112 KB |
testcase_42 | AC | 539 ms
125,296 KB |
testcase_43 | AC | 185 ms
112,972 KB |
testcase_44 | AC | 188 ms
114,308 KB |
testcase_45 | AC | 239 ms
132,380 KB |
testcase_46 | AC | 205 ms
120,028 KB |
testcase_47 | AC | 165 ms
107,196 KB |
testcase_48 | AC | 206 ms
120,512 KB |
ソースコード
import sys input = sys.stdin.readline N = int(input()) A = list(map(int, input().split())) G = [[] for i in range(N)] for i in range(N - 1): u, v = map(int, input().split()) u, v = u - 1, v - 1 G[u].append(v) G[v].append(u) mod = 998244353 def non_rec_dfs(s, G): N = len(G) stack = [s] par = [-1] * N sz = [1] * N dp = [0] * N ans = 0 while stack: u = stack.pop() if u >= 0: stack.append(~u) for v in G[u]: if v == par[u]: continue par[v] = u stack.append(v) else: u = ~u s1, s2 = 0, 0 for v in G[u]: if v == par[u]: continue sz[u] += sz[v] dp[u] += dp[v] * A[u] dp[u] %= mod s1 += dp[v] s2 += dp[v] ** 2 dp[u] += A[u] dp[u] %= mod ans += (s1 ** 2 - s2) // 2 * A[u] ans %= mod return (ans + sum(dp) - sum(A)) % mod print(non_rec_dfs(0, G))