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))