結果
問題 | No.1333 Squared Sum |
ユーザー | persimmon-persimmon |
提出日時 | 2021-02-14 14:14:52 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,484 ms / 2,000 ms |
コード長 | 1,796 bytes |
コンパイル時間 | 319 ms |
コンパイル使用メモリ | 87,116 KB |
実行使用メモリ | 207,536 KB |
最終ジャッジ日時 | 2023-09-29 04:04:46 |
合計ジャッジ時間 | 41,516 ms |
ジャッジサーバーID (参考情報) |
judge13 / judge11 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 77 ms
71,252 KB |
testcase_01 | AC | 79 ms
71,248 KB |
testcase_02 | AC | 78 ms
71,100 KB |
testcase_03 | AC | 1,484 ms
203,876 KB |
testcase_04 | AC | 1,482 ms
200,508 KB |
testcase_05 | AC | 1,388 ms
202,372 KB |
testcase_06 | AC | 1,450 ms
205,020 KB |
testcase_07 | AC | 1,359 ms
200,708 KB |
testcase_08 | AC | 1,369 ms
202,188 KB |
testcase_09 | AC | 1,308 ms
201,916 KB |
testcase_10 | AC | 1,336 ms
200,408 KB |
testcase_11 | AC | 1,389 ms
206,912 KB |
testcase_12 | AC | 1,444 ms
205,400 KB |
testcase_13 | AC | 932 ms
198,488 KB |
testcase_14 | AC | 1,338 ms
201,644 KB |
testcase_15 | AC | 1,304 ms
201,780 KB |
testcase_16 | AC | 78 ms
71,164 KB |
testcase_17 | AC | 77 ms
71,120 KB |
testcase_18 | AC | 77 ms
71,144 KB |
testcase_19 | AC | 79 ms
71,132 KB |
testcase_20 | AC | 80 ms
71,272 KB |
testcase_21 | AC | 80 ms
70,980 KB |
testcase_22 | AC | 79 ms
71,320 KB |
testcase_23 | AC | 79 ms
71,252 KB |
testcase_24 | AC | 81 ms
71,124 KB |
testcase_25 | AC | 81 ms
71,044 KB |
testcase_26 | AC | 1,304 ms
199,912 KB |
testcase_27 | AC | 1,346 ms
200,000 KB |
testcase_28 | AC | 1,312 ms
200,276 KB |
testcase_29 | AC | 905 ms
196,068 KB |
testcase_30 | AC | 598 ms
128,148 KB |
testcase_31 | AC | 386 ms
107,680 KB |
testcase_32 | AC | 838 ms
155,084 KB |
testcase_33 | AC | 661 ms
134,488 KB |
testcase_34 | AC | 1,134 ms
181,692 KB |
testcase_35 | AC | 844 ms
149,160 KB |
testcase_36 | AC | 521 ms
123,232 KB |
testcase_37 | AC | 562 ms
126,552 KB |
testcase_38 | AC | 634 ms
133,620 KB |
testcase_39 | AC | 935 ms
164,320 KB |
testcase_40 | AC | 945 ms
207,536 KB |
testcase_41 | AC | 957 ms
206,224 KB |
testcase_42 | AC | 956 ms
206,816 KB |
testcase_43 | AC | 953 ms
203,592 KB |
ソースコード
import sys input=sys.stdin.readline def main2(n,uvw): ki=[[] for _ in range(n)] for u,v,w in uvw: u,v=u-1,v-1 ki[u].append([v,w]) ki[v].append([u,w]) mod=10**9+7 def dfs_tree(n,root,ki): q=[root] parent=[None]*n dist=[0]*n for v in q: for nv,cost in ki[v]: if nv==root or parent[nv] is not None:continue dist[nv]=dist[v]+cost parent[nv]=v,cost q.append(nv) return parent,q,dist parent,order,dist=dfs_tree(n,0,ki) dp0=[[] for _ in range(n)] for v in order[::-1]: numv,sumv=1,0 for num_,sum_,cost_ in dp0[v]: numv+=num_ sumv+=sum_+num_*cost_ sumv%=mod dp0[v]=numv,sumv if v==0:break p,cost=parent[v] dp0[p].append([numv,sumv,cost]) # dp0[v]:親からvへの矢印に対応する部分木の値 # dp1[v]:vから親への矢印に対応する部分木の値 ans=0 dp0[0]=None dp1=[None]*n parent[0]=[-1,-1] for v in order: snumv,ssumv=1,0 for nv,cost in ki[v]: if nv==parent[v][0]: num_,sum_=dp1[v] else: num_,sum_=dp0[nv] snumv+=num_ ssumv+=sum_+num_*cost ssumv%=mod for nv,cost in ki[v]: #if nv==0:continue if nv==parent[v][0]: num0,sum0=dp1[v] else: num0,sum0=dp0[nv] num1,sum1=snumv-num0,ssumv-sum0-cost*num0 num1,sum1=num1%mod,sum1%mod tmp=num0*sum1+num1*sum0+cost*num0*num1 tmp*=cost tmp%=mod ans+=tmp ans%=mod dp1[nv]=num1,sum1 #print('dp0') #for i in range(n):print(i,dp0[i]) #print('dp1') #for i in range(n):print(i,dp1[i]) ans*=pow(2,mod-2,mod) return ans%mod if __name__=='__main__': n=int(input()) uvw=[list(map(int,input().split())) for _ in range(n-1)] ret2=main2(n,uvw) print(ret2)