#include #include using namespace std; vector G[100100]; vector cnt(100100, 1); vector check(100100, 0); long dfs(int x) { check[x] = 1; for (int i = 0; i < G[x].size(); i++) { if (!check[G[x][i]]) { cnt[x] += dfs(G[x][i]); } } return cnt[x]; } int main() { int n, q; cin >> n >> q; for (int i = 0; i < n - 1; i++) { int a, b; cin >> a >> b; a--; b--; G[a].emplace_back(b); G[b].emplace_back(a); } dfs(0); long ans = 0; for (int i = 0; i < q; i++) { int p; long x; cin >> p >> x; p--; ans += x * cnt[p]; cout << ans << endl; } return 0; }