結果

問題 No.2949 Product on Tree
ユーザー nouka28nouka28
提出日時 2024-06-21 15:19:08
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,996 ms / 2,000 ms
コード長 1,001 bytes
コンパイル時間 519 ms
コンパイル使用メモリ 82,544 KB
実行使用メモリ 401,676 KB
最終ジャッジ日時 2024-09-23 07:20:53
合計ジャッジ時間 51,190 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 37 ms
53,228 KB
testcase_01 AC 38 ms
53,012 KB
testcase_02 AC 38 ms
53,964 KB
testcase_03 AC 736 ms
111,244 KB
testcase_04 AC 719 ms
110,772 KB
testcase_05 AC 741 ms
111,448 KB
testcase_06 AC 751 ms
112,400 KB
testcase_07 AC 737 ms
111,508 KB
testcase_08 AC 753 ms
114,032 KB
testcase_09 AC 753 ms
114,432 KB
testcase_10 AC 785 ms
120,916 KB
testcase_11 AC 994 ms
144,088 KB
testcase_12 AC 819 ms
149,128 KB
testcase_13 AC 1,113 ms
200,364 KB
testcase_14 AC 1,330 ms
262,380 KB
testcase_15 AC 1,421 ms
268,160 KB
testcase_16 AC 1,386 ms
253,580 KB
testcase_17 AC 1,087 ms
245,400 KB
testcase_18 AC 1,507 ms
286,308 KB
testcase_19 AC 1,812 ms
347,100 KB
testcase_20 AC 1,391 ms
263,016 KB
testcase_21 AC 1,406 ms
287,512 KB
testcase_22 AC 1,804 ms
363,220 KB
testcase_23 AC 755 ms
112,208 KB
testcase_24 AC 774 ms
112,364 KB
testcase_25 AC 759 ms
112,100 KB
testcase_26 AC 763 ms
112,576 KB
testcase_27 AC 763 ms
113,296 KB
testcase_28 AC 775 ms
113,228 KB
testcase_29 AC 774 ms
115,868 KB
testcase_30 AC 797 ms
122,328 KB
testcase_31 AC 823 ms
130,016 KB
testcase_32 AC 1,191 ms
175,688 KB
testcase_33 AC 1,369 ms
246,680 KB
testcase_34 AC 1,683 ms
361,860 KB
testcase_35 AC 1,492 ms
272,960 KB
testcase_36 AC 1,749 ms
381,812 KB
testcase_37 AC 1,515 ms
323,468 KB
testcase_38 AC 1,387 ms
291,216 KB
testcase_39 AC 1,785 ms
335,328 KB
testcase_40 AC 1,996 ms
401,676 KB
testcase_41 AC 1,179 ms
268,424 KB
testcase_42 AC 1,036 ms
227,988 KB
testcase_43 AC 349 ms
104,824 KB
testcase_44 AC 354 ms
104,524 KB
testcase_45 AC 442 ms
117,304 KB
testcase_46 AC 393 ms
106,140 KB
testcase_47 AC 309 ms
101,880 KB
testcase_48 AC 403 ms
105,912 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
sys.setrecursionlimit(2*10**5)

def fast(N,A,G):
    mod=998244353

    def dfs(p,prev=-1):
        sm,sm2,ans=0,0,0
        for e in G[p]:
            if e==prev:continue
            esm,eans=dfs(e,p)
            sm=(sm+esm)%mod
            sm2=(sm2+esm**2)%mod
            ans=(ans+eans)%mod
        ans=(ans+A[p]*(sm**2-sm2)*pow(2,mod-2,mod)+A[p]*sm)%mod
        return ((sm+1)*A[p])%mod,ans

    return dfs(0)[1]

def naive(N,A,G):
    
    mod=998244353
    def dfs(p,prod,par,prev=-1)->int:
        ans=0
        prod=(prod*A[p])%mod
        if p<par:
            ans=(ans+prod)%mod
        for e in G[p]:
            if e==prev:continue
            ans=(ans+dfs(e,prod,par,p))%mod
        return ans
    ans=0
    for i in range(N):
        ans=(ans+dfs(i,1,i))%mod
    return ans

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-=1
    v-=1
    G[u].append(v)
    G[v].append(u)

print(fast(N,A,G))
0