#include using namespace std; #ifdef LOCAL #include "settings/debug.cpp" #else #define Debug(...) void(0) #endif #define rep(i, n) for (int i = 0; i < (n); ++i) using ll = long long; using ull = unsigned long long; int main() { cin.tie(nullptr)->sync_with_stdio(false); int n, q; cin >> n >> q; vector Graph(n, vector(0)); rep(_, n - 1) { int u, v; cin >> u >> v; --u, --v; Graph[u].push_back(v); Graph[v].push_back(u); } vector dp(n, 0); function dfs = [&](int u, int p) { for (int v : Graph[u]) { if (v == p) continue; dfs(v, u); dp[u] += dp[v]; } dp[u] += 1; }; dfs(0, -1); ll ans = 0; while (q--) { int p, x; cin >> p >> x; --p; ans += (ll) dp[p] * x; cout << ans << '\n'; } return 0; }