https://www.acmicpc.net/problem/15591
Input)
4 3
1 2 3
2 3 2
2 4 4
1 2
4 1
3 1
Output)
3
0
2
from collections import deque
n, q = [int(x) for x in input().split()]
tree = [[] for _ in range(n+1)]
usd = [[0]*(n+1) for _ in range(n+1)]
for i in range(n-1):
a, b, u = [int(x) for x in input().split()]
tree[a].append(b)
tree[b].append(a)
usd[a][b] = u
usd[b][a] = u
que = deque()
def get_usd(k, s):
global usd
global que
vis = set()
count = 0
que.append(s)
vis.add(s)
usd[s][s] = 1000000000
while(que):
cur = que[0]
que.popleft()
for a in tree[cur]:
if a not in vis:
usd[s][a] = min(usd[s][cur], usd[cur][a])
if usd[s][a] >= k:
count += 1
que.append(a)
vis.add(a)
usd[s][0] = 1
return count
def check_num(k, s):
if usd[s][0]==1:
count = -1
for a in usd[s][1:]:
if a >= k:
count += 1
return count
else:
return get_usd(k, s)
for i in range(q):
k, s = [int(x) for x in input().split()]
print(check_num(k, s))