結果
問題 | No.2360 Path to Integer |
ユーザー | 👑 SPD_9X2 |
提出日時 | 2023-06-23 22:47:29 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 329 ms / 2,500 ms |
コード長 | 1,464 bytes |
コンパイル時間 | 166 ms |
コンパイル使用メモリ | 82,400 KB |
実行使用メモリ | 104,732 KB |
最終ジャッジ日時 | 2024-07-01 02:32:46 |
合計ジャッジ時間 | 3,826 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 41 ms
54,764 KB |
testcase_01 | AC | 43 ms
55,092 KB |
testcase_02 | AC | 43 ms
54,860 KB |
testcase_03 | AC | 43 ms
54,864 KB |
testcase_04 | AC | 42 ms
54,996 KB |
testcase_05 | AC | 41 ms
54,132 KB |
testcase_06 | AC | 42 ms
54,708 KB |
testcase_07 | AC | 58 ms
66,228 KB |
testcase_08 | AC | 100 ms
78,452 KB |
testcase_09 | AC | 329 ms
99,328 KB |
testcase_10 | AC | 278 ms
104,732 KB |
testcase_11 | AC | 280 ms
104,624 KB |
testcase_12 | AC | 197 ms
100,440 KB |
testcase_13 | AC | 319 ms
99,316 KB |
testcase_14 | AC | 268 ms
100,296 KB |
testcase_15 | AC | 304 ms
100,056 KB |
testcase_16 | AC | 259 ms
100,668 KB |
ソースコード
""" 全方位木dpだよな dp[v] = 頂点v以下全てのパスについての現時点の総和 """ import sys from sys import stdin from collections import deque inf = float("inf") N = int(stdin.readline()) A = list(map(int,stdin.readline().split())) lis = [ [] for i in range(N) ] for i in range(N-1): u,v = map(int,stdin.readline().split()) u -= 1 v -= 1 lis[u].append(v) lis[v].append(u) dlis = [inf] * N dlis[0] = 0 q = deque([0]) visit = [] plis = [0] * N while q: v = q.popleft() visit.append(v) for nex in lis[v]: if dlis[nex] > dlis[v] + 1: dlis[nex] = dlis[v] + 1 plis[nex] = v q.append(nex) mod = 998244353 chsum = [0] * N chnum = [1] * N ans = 0 # dfs1 for v in reversed(visit): na = A[v] chsum[v] *= pow(10,len(str(na)),mod) chsum[v] += chnum[v] * na chsum[v] %= mod ans += chsum[v] ans %= mod if plis[v] != v: chsum[plis[v]] += chsum[v] chnum[plis[v]] += chnum[v] # dfs2 for v in visit[1:]: vp = plis[v] ap = A[vp] psum = chsum[plis[v]] # まず、自分のキヨを取り除く psum -= chsum[v] * pow(10,len(str(ap)),mod) psum -= chnum[v] * ap psum %= mod # 自分側に持ってきて、加算 na = A[v] psum *= pow(10,len(str(na)),mod) psum += (N-chnum[v]) * na ans += psum ans %= mod chsum[v] += psum chsum[v] %= mod print (ans % mod)