結果
問題 | No.1333 Squared Sum |
ユーザー | persimmon-persimmon |
提出日時 | 2021-02-14 14:14:52 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,310 ms / 2,000 ms |
コード長 | 1,796 bytes |
コンパイル時間 | 282 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 205,452 KB |
最終ジャッジ日時 | 2024-07-21 22:38:31 |
合計ジャッジ時間 | 34,812 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 40 ms
52,096 KB |
testcase_01 | AC | 42 ms
52,352 KB |
testcase_02 | AC | 41 ms
52,352 KB |
testcase_03 | AC | 1,277 ms
201,612 KB |
testcase_04 | AC | 1,310 ms
198,640 KB |
testcase_05 | AC | 1,283 ms
200,712 KB |
testcase_06 | AC | 1,306 ms
201,020 KB |
testcase_07 | AC | 1,275 ms
200,536 KB |
testcase_08 | AC | 1,286 ms
199,556 KB |
testcase_09 | AC | 1,230 ms
199,312 KB |
testcase_10 | AC | 1,251 ms
200,212 KB |
testcase_11 | AC | 1,283 ms
205,452 KB |
testcase_12 | AC | 1,275 ms
202,240 KB |
testcase_13 | AC | 774 ms
192,988 KB |
testcase_14 | AC | 1,074 ms
197,524 KB |
testcase_15 | AC | 1,083 ms
197,400 KB |
testcase_16 | AC | 36 ms
52,608 KB |
testcase_17 | AC | 35 ms
52,480 KB |
testcase_18 | AC | 35 ms
52,736 KB |
testcase_19 | AC | 36 ms
52,096 KB |
testcase_20 | AC | 34 ms
52,352 KB |
testcase_21 | AC | 36 ms
52,736 KB |
testcase_22 | AC | 37 ms
52,224 KB |
testcase_23 | AC | 36 ms
52,352 KB |
testcase_24 | AC | 36 ms
51,968 KB |
testcase_25 | AC | 36 ms
52,352 KB |
testcase_26 | AC | 1,140 ms
195,164 KB |
testcase_27 | AC | 1,121 ms
195,564 KB |
testcase_28 | AC | 1,079 ms
195,456 KB |
testcase_29 | AC | 762 ms
192,752 KB |
testcase_30 | AC | 439 ms
126,440 KB |
testcase_31 | AC | 305 ms
107,648 KB |
testcase_32 | AC | 655 ms
153,544 KB |
testcase_33 | AC | 516 ms
131,804 KB |
testcase_34 | AC | 920 ms
180,484 KB |
testcase_35 | AC | 676 ms
154,176 KB |
testcase_36 | AC | 399 ms
121,208 KB |
testcase_37 | AC | 434 ms
124,748 KB |
testcase_38 | AC | 487 ms
131,852 KB |
testcase_39 | AC | 755 ms
166,060 KB |
testcase_40 | AC | 820 ms
205,376 KB |
testcase_41 | AC | 773 ms
203,628 KB |
testcase_42 | AC | 774 ms
204,436 KB |
testcase_43 | AC | 753 ms
201,328 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)