#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
// - Bài này ta sẽ áp dụng kiến thức liên quan đến prefix sum
// - Gọi sum(u) = tổng của cây con gốc u = tổng các phần tử trong đoạn a[tin(u), tout(u)]
// => Khi ta update giá trị a(u) của 1 đỉnh u nào đấy thì sum(anc) với anc là tổ tiên của u cũng sẽ thay đổi theo,
// hay nói cách khác là sum(anc) của các đỉnh anc nằm trên đường đi từ 1 đến u đều sẽ bị thay đổi.
// => Để update một đường đi (u, v) lên thêm val đơn vị, ta làm như sau:
// 1. a(u) += val, a(v) += val
// 2. a(lca(u, v)) -= val
// 3. a(up[0][lca(u, v)]) -= val (với lca(u, v) != 1)
// - Sau cùng ta có sum(u) chính là giá trị của đỉnh u ở thời điểm sau khi update
// - Lưu ý cách update trên chỉ áp dụng với trường hợp trọng số của đỉnh, với trường hợp trọng số của cạnh thì cần chỉnh sửa lại một chút.
const int N = 2e5 + 5;
const int LOG = 18;
int n, q;
vector<int> adj[N];
int up[LOG][N];
int tin[N], tout[N], timer;
void dfs1(int u, int p) {
tin[u] = ++timer;
up[0][u] = p;
for (int i = 1; i < LOG; i++) {
up[i][u] = up[i - 1][up[i - 1][u]];
}
for (int v : adj[u]) {
if (v == p) continue;
dfs1(v, u);
}
tout[u] = timer;
}
bool isAncestor(int u, int v) {
return (tin[u] <= tin[v] && tout[v] <= tout[u]);
}
int lca(int u, int v) {
if (isAncestor(u, v)) return u;
if (isAncestor(v, u)) return v;
for (int i = LOG - 1; i >= 0; i--) {
if (!isAncestor(up[i][u], v)) {
u = up[i][u];
}
}
return up[0][u];
}
int sum[N];
void dfs2(int u, int p) {
for (int v : adj[u]) {
if (v == p) continue;
dfs2(v, u);
sum[u] += sum[v];
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> q;
for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
timer = 0;
dfs1(1, 1);
for (int i = 0; i < q; i++) {
int u, v;
cin >> u >> v;
int lca_uv = lca(u, v);
sum[u]++, sum[v]++;
sum[lca_uv]--;
if (lca_uv != 1) sum[up[0][lca_uv]]--;
}
dfs2(1, 1);
for (int u = 1; u <= n; u++) {
cout << sum[u] << ' ';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKLy8gLSBCw6BpIG7DoHkgdGEgc+G6vSDDoXAgZOG7pW5nIGtp4bq/biB0aOG7qWMgbGnDqm4gcXVhbiDEkeG6v24gcHJlZml4IHN1bQovLyAtIEfhu41pIHN1bSh1KSA9IHThu5VuZyBj4bunYSBjw6J5IGNvbiBn4buRYyB1ID0gdOG7lW5nIGPDoWMgcGjhuqduIHThu60gdHJvbmcgxJFv4bqhbiBhW3Rpbih1KSwgdG91dCh1KV0KLy8gPT4gS2hpIHRhIHVwZGF0ZSBnacOhIHRy4buLIGEodSkgY+G7p2EgMSDEkeG7iW5oIHUgbsOgbyDEkeG6pXkgdGjDrCBzdW0oYW5jKSB24bubaSBhbmMgbMOgIHThu5UgdGnDqm4gY+G7p2EgdSBjxaluZyBz4bq9IHRoYXkgxJHhu5VpIHRoZW8sIAovLyAgICBoYXkgbsOzaSBjw6FjaCBraMOhYyBsw6Agc3VtKGFuYykgY+G7p2EgY8OhYyDEkeG7iW5oIGFuYyBu4bqxbSB0csOqbiDEkcaw4budbmcgxJFpIHThu6sgMSDEkeG6v24gdSDEkeG7gXUgc+G6vSBi4buLIHRoYXkgxJHhu5VpLgovLyA9PiDEkOG7gyB1cGRhdGUgbeG7mXQgxJHGsOG7nW5nIMSRaSAodSwgdikgbMOqbiB0aMOqbSB2YWwgxJHGoW4gduG7iywgdGEgbMOgbSBuaMawIHNhdToKLy8gMS4gYSh1KSArPSB2YWwsIGEodikgKz0gdmFsCi8vIDIuIGEobGNhKHUsIHYpKSAtPSB2YWwKLy8gMy4gYSh1cFswXVtsY2EodSwgdildKSAtPSB2YWwgKHbhu5tpIGxjYSh1LCB2KSAhPSAxKQovLyAtIFNhdSBjw7luZyB0YSBjw7Mgc3VtKHUpIGNow61uaCBsw6AgZ2nDoSB0cuG7iyBj4bunYSDEkeG7iW5oIHUg4bufIHRo4budaSDEkWnhu4NtIHNhdSBraGkgdXBkYXRlCi8vIC0gTMawdSDDvSBjw6FjaCB1cGRhdGUgdHLDqm4gY2jhu4kgw6FwIGThu6VuZyB24bubaSB0csaw4budbmcgaOG7o3AgdHLhu41uZyBz4buRIGPhu6dhIMSR4buJbmgsIHbhu5tpIHRyxrDhu51uZyBo4bujcCB0cuG7jW5nIHPhu5EgY+G7p2EgY+G6oW5oIHRow6wgY+G6p24gY2jhu4luaCBz4butYSBs4bqhaSBt4buZdCBjaMO6dC4KCmNvbnN0IGludCBOID0gMmU1ICsgNTsgIApjb25zdCBpbnQgTE9HID0gMTg7ICAgCgppbnQgbiwgcTsgCnZlY3RvcjxpbnQ+IGFkaltOXTsgCgppbnQgdXBbTE9HXVtOXTsgCmludCB0aW5bTl0sIHRvdXRbTl0sIHRpbWVyOyAKCnZvaWQgZGZzMShpbnQgdSwgaW50IHApIHsKCXRpblt1XSA9ICsrdGltZXI7ICAKCXVwWzBdW3VdID0gcDsgCglmb3IgKGludCBpID0gMTsgaSA8IExPRzsgaSsrKSB7CgkJdXBbaV1bdV0gPSB1cFtpIC0gMV1bdXBbaSAtIDFdW3VdXTsgIAoJfQoJZm9yIChpbnQgdiA6IGFkalt1XSkgewoJCWlmICh2ID09IHApIGNvbnRpbnVlOyAKCQlkZnMxKHYsIHUpOyAKCX0KCXRvdXRbdV0gPSB0aW1lcjsKfQoKYm9vbCBpc0FuY2VzdG9yKGludCB1LCBpbnQgdikgewoJcmV0dXJuICh0aW5bdV0gPD0gdGluW3ZdICYmIHRvdXRbdl0gPD0gdG91dFt1XSk7IAp9CgppbnQgbGNhKGludCB1LCBpbnQgdikgewoJaWYgKGlzQW5jZXN0b3IodSwgdikpIHJldHVybiB1OyAgCglpZiAoaXNBbmNlc3Rvcih2LCB1KSkgcmV0dXJuIHY7ICAgCglmb3IgKGludCBpID0gTE9HIC0gMTsgaSA+PSAwOyBpLS0pIHsKCQlpZiAoIWlzQW5jZXN0b3IodXBbaV1bdV0sIHYpKSB7CgkJCXUgPSB1cFtpXVt1XTsgCgkJfQoJfQoJcmV0dXJuIHVwWzBdW3VdOyAKfQoKaW50IHN1bVtOXTsgCgp2b2lkIGRmczIoaW50IHUsIGludCBwKSB7Cglmb3IgKGludCB2IDogYWRqW3VdKSB7CgkJaWYgKHYgPT0gcCkgY29udGludWU7ICAKCQlkZnMyKHYsIHUpOyAKCQlzdW1bdV0gKz0gc3VtW3ZdOyAKCX0KfQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gcTsgIAoJZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CgkJaW50IHUsIHY7IAoJCWNpbiA+PiB1ID4+IHY7IAoJCWFkalt1XS5wdXNoX2JhY2sodik7IAoJCWFkalt2XS5wdXNoX2JhY2sodSk7IAoJfQoKCXRpbWVyID0gMDsgIAoJZGZzMSgxLCAxKTsgCgoJZm9yIChpbnQgaSA9IDA7IGkgPCBxOyBpKyspIHsKCQlpbnQgdSwgdjsgCgkJY2luID4+IHUgPj4gdjsgIAoJCWludCBsY2FfdXYgPSBsY2EodSwgdik7IAoJCXN1bVt1XSsrLCBzdW1bdl0rKzsgCgkJc3VtW2xjYV91dl0tLTsgCgkJaWYgKGxjYV91diAhPSAxKSBzdW1bdXBbMF1bbGNhX3V2XV0tLTsgCgl9CgoJZGZzMigxLCAxKTsgCgoJZm9yIChpbnQgdSA9IDE7IHUgPD0gbjsgdSsrKSB7CgkJY291dCA8PCBzdW1bdV0gPDwgJyAnOwoJfQp9