結果

問題 No.900 aδδitivee
コンテスト
ユーザー sasa8uyauya
提出日時 2026-03-11 22:34:52
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 1,031 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 484 ms
コンパイル使用メモリ 85,484 KB
実行使用メモリ 101,292 KB
最終ジャッジ日時 2026-03-11 22:35:17
合計ジャッジ時間 18,210 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 2
other WA * 27
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

n=int(input())
e=[[] for i in range(n)]
a=[0]*n
for i in range(n-1):
  u,v,w=map(int,input().split())
  e[u]+=[v]
  a[v]=w

o=[]
y=[0]*n
g=[0]*n
d=[0]*n
v=[0]*n
q=[0]
while len(q)>0:
  s=q[-1]
  if v[s]==0:
    v[s]=1
    o+=[s]
    y[s]=len(o)-1
    for t in e[s]:
      q+=[t]
      d[t]=d[s]+1
  else:
    g[s]=1+sum(g[t] for t in e[s])
    q.pop()

B=317

st1=[0]*B*B
st2=[0]*B

def ADD(l,r,v):
  yl=l//B
  yr=r//B
  for y in [yl,yr]:
    for i in range(y*B,y*B+B):
      st1[i]+=st2[y]
    st2[y]=0
  if yl==yr:
    for i in range(l,r+1):
      st1[i]+=v
  else:
    for i in range(l,yl*B+B):
      st1[i]+=v
    for i in range(yr*B,r+1):
      st1[i]+=v
    for i in range(yl+1,yr):
      st2[i]+=v
  return

def GET(x):
  y=x//B
  for i in range(y*B,y*B+B):
    st1[i]+=st2[y]
  st2[y]=0
  return st1[x]

for i in range(n):
  j=o[i]
  ADD(i,i+g[j]-1,a[j])

Q=int(input())
for _ in range(Q):
  q=list(map(int,input().split()))
  t=q[0]
  if t==1:
    t,a,x=q
    ADD(y[a],y[a]+g[a]-1,x)
  else:
    t,b=q
    print(GET(y[b]))
0