結果
| 問題 |
No.1637 Easy Tree Query
|
| コンテスト | |
| ユーザー |
👑 SPD_9X2
|
| 提出日時 | 2021-08-06 21:36:16 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 395 ms / 2,000 ms |
| コード長 | 1,016 bytes |
| コンパイル時間 | 648 ms |
| コンパイル使用メモリ | 82,380 KB |
| 実行使用メモリ | 106,896 KB |
| 最終ジャッジ日時 | 2024-09-17 03:45:38 |
| 合計ジャッジ時間 | 9,923 ms |
|
ジャッジサーバーID (参考情報) |
judge6 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 33 |
ソースコード
import sys
from sys import stdin
from collections import deque
def NC_Dij(lis,start):
ret = [float("inf")] * len(lis)
ret[start] = 0
q = deque([start])
plis = [i for i in range(len(lis))]
while len(q) > 0:
now = q.popleft()
for nex in lis[now]:
if ret[nex] > ret[now] + 1:
ret[nex] = ret[now] + 1
plis[nex] = now
q.append(nex)
return ret,plis
N,Q = map(int,stdin.readline().split())
lis = [ [] for i in range(N) ]
for i in range(N-1):
a,b = map(int,stdin.readline().split())
a -= 1
b -= 1
lis[a].append(b)
lis[b].append(a)
dlis,plis = NC_Dij(lis,0)
di = [(dlis[i],i) for i in range(N)]
di.sort()
di.reverse()
c = [1] * N
#print (di,plis)
for td,v in di:
if plis[v] != v:
c[plis[v]] += c[v]
#print (c)
ANS = []
ans = 0
for i in range(Q):
p,x = map(int,stdin.readline().split())
p -= 1
ans += c[p] * x
ANS.append(str(ans))
print ("\n".join(ANS))
SPD_9X2