N, Q = gets.split.map(&:to_i) graph = Array.new(N) { [] } (N - 1).times do u, v = gets.split.map(&:to_i) graph[u - 1] << v - 1 graph[v - 1] << u - 1 end weight = Array.new(N, 1) visited = Array.new(N, false) dfs = ->(u) { visited[u] = true graph[u].each do |v| next if visited[v] dfs[v] weight[u] += weight[v] end } dfs[0] sum = 0 Q.times do v, c = gets.split.map(&:to_i) sum += weight[v - 1] * c puts sum end