#include<bits/stdc++.h>
#define pb push_back
#define fi first
#define se second
#define pai pair<int, int>
using namespace std;
const int maxN = 1e6 + 20;
int n, m;
vector<int> adj[maxN];
int parent[maxN];
pai tv[maxN];
int in[maxN], out[maxN], timer;
void dfs(int u = 1, int par = -1)
{
parent[u] = par;
in[u] = ++timer;
for(auto v:adj[u])
if(v != par) dfs(v, u);
out[u] = timer;
}
int deg[maxN];
void init()
{
cin >> n >> m;
for(int i = 1; i < n; i++)
{
int u ,v;
cin >> u >> v;
adj[u].pb(v);
adj[v].pb(u);
}
dfs();
for(int i = 1; i <= m; i++)
{
int u, v;
cin >> u >> v;
tv[i] = {u,v};
}
}
vector<int> adj_2[maxN];
int vst[maxN];
bool dfs_cycle(int u)
{
vst[u] = 1;
for(int v : adj_2[u]) {
if(vst[v] == 0) {
if(dfs_cycle(v)) return true;
} else if(vst[v] == 1) {
return true;
}
}
vst[u] = 2;
return false;
}
bool ck() {
for(int i = 1; i <= m; i++) {
int u = tv[i].fi;
int v = tv[i].se;
adj_2[v].push_back(u);
}
fill(vst, vst + n + 1, 0);
for(int i = 1; i <= n; i++)
if(vst[i] == 0 && dfs_cycle(i)) return true;
return false;
}
void solve()
{
if(ck())
{
for(int i = 1; i <= n; i++)
cout << 0 << '\n';
return;
}
for(int i = 1; i <= m; i++)
{
int u, v;
u = tv[i].fi;
v = tv[i].se;
if(in[v] <= in[u] && out[u] <= out[v])
{
deg[in[u]]++;
deg[out[u] + 1]--;
}
else if(in[u] <= in[v] && out[v] <= out[u])
{
int node = v;
for(auto child:adj[u])
if(child != parent[u])
if(in[child] <= in[v] && out[v] <= out[child])
{
node = child;
break;
}
deg[1]++;
deg[in[node]]--;
deg[out[node]+1]++;
}
else
{
deg[in[u]]++;
deg[out[u] + 1]--;
}
}
for(int i = 1; i <= n; i++)
deg[i] += deg[i-1];
for(int i = 1; i <= n; i++)
cout << (deg[in[i]] == 0) << '\n';
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
init();
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHBhaSBwYWlyPGludCwgaW50Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgbWF4TiA9IDFlNiArIDIwOwppbnQgbiwgbTsKdmVjdG9yPGludD4gYWRqW21heE5dOwppbnQgcGFyZW50W21heE5dOwpwYWkgdHZbbWF4Tl07CmludCBpblttYXhOXSwgb3V0W21heE5dLCB0aW1lcjsKdm9pZCBkZnMoaW50IHUgPSAxLCBpbnQgcGFyID0gLTEpCnsKCXBhcmVudFt1XSA9IHBhcjsKCWluW3VdID0gKyt0aW1lcjsKCQoJZm9yKGF1dG8gdjphZGpbdV0pCgkJaWYodiAhPSBwYXIpIGRmcyh2LCB1KTsKCW91dFt1XSA9IHRpbWVyOwp9CiAKaW50IGRlZ1ttYXhOXTsKIAp2b2lkIGluaXQoKQp7CgljaW4gPj4gbiA+PiBtOwoJZm9yKGludCBpID0gMTsgaSA8IG47IGkrKykKCXsKCQlpbnQgdSAsdjsKCQljaW4gPj4gdSA+PiB2OwoJCWFkalt1XS5wYih2KTsKCQlhZGpbdl0ucGIodSk7Cgl9CgkKCWRmcygpOwoJCglmb3IoaW50IGkgPSAxOyBpIDw9IG07IGkrKykKCXsKCQlpbnQgdSwgdjsKCQljaW4gPj4gdSA+PiB2OwoJCXR2W2ldID0ge3Usdn07Cgl9Cn0KIAp2ZWN0b3I8aW50PiBhZGpfMlttYXhOXTsKaW50IHZzdFttYXhOXTsKYm9vbCBkZnNfY3ljbGUoaW50IHUpCnsKICAgIHZzdFt1XSA9IDE7CiAgICBmb3IoaW50IHYgOiBhZGpfMlt1XSkgewogICAgICAgIGlmKHZzdFt2XSA9PSAwKSB7CiAgICAgICAgICAgIGlmKGRmc19jeWNsZSh2KSkgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIGlmKHZzdFt2XSA9PSAxKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIHZzdFt1XSA9IDI7CiAgICByZXR1cm4gZmFsc2U7Cn0KIApib29sIGNrKCkgewogICAgZm9yKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKICAgICAgICBpbnQgdSA9IHR2W2ldLmZpOwogICAgICAgIGludCB2ID0gdHZbaV0uc2U7CiAgICAgICAgYWRqXzJbdl0ucHVzaF9iYWNrKHUpOwogICAgfQogICAgZmlsbCh2c3QsIHZzdCArIG4gKyAxLCAwKTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIGlmKHZzdFtpXSA9PSAwICYmIGRmc19jeWNsZShpKSkgcmV0dXJuIHRydWU7CiAgICByZXR1cm4gZmFsc2U7Cn0Kdm9pZCBzb2x2ZSgpCnsKCWlmKGNrKCkpCgl7CgkJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCgkJCWNvdXQgPDwgMCA8PCAnXG4nOwoJCXJldHVybjsKCX0KCQoJZm9yKGludCBpID0gMTsgaSA8PSBtOyBpKyspCgl7CgkJaW50IHUsIHY7CgkJdSA9IHR2W2ldLmZpOwoJCXYgPSB0dltpXS5zZTsKCQlpZihpblt2XSA8PSBpblt1XSAmJiBvdXRbdV0gPD0gb3V0W3ZdKQoJCXsKCQkJZGVnW2luW3VdXSsrOwoJCQlkZWdbb3V0W3VdICsgMV0tLTsKCQl9CgkJZWxzZSBpZihpblt1XSA8PSBpblt2XSAmJiBvdXRbdl0gPD0gb3V0W3VdKQoJCXsKCQkJaW50IG5vZGUgPSB2OwoJCQlmb3IoYXV0byBjaGlsZDphZGpbdV0pCgkJCQlpZihjaGlsZCAhPSBwYXJlbnRbdV0pCgkJCQkJaWYoaW5bY2hpbGRdIDw9IGluW3ZdICYmIG91dFt2XSA8PSBvdXRbY2hpbGRdKQoJCQkJCXsKCQkJCQkJbm9kZSA9IGNoaWxkOwoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQoJCQlkZWdbMV0rKzsKCQkJZGVnW2luW25vZGVdXS0tOwoJCQlkZWdbb3V0W25vZGVdKzFdKys7CgkJfQoJCWVsc2UKCQl7CgkJCWRlZ1tpblt1XV0rKzsKCQkJZGVnW291dFt1XSArIDFdLS07CgkJfQoJfQoJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCgkJZGVnW2ldICs9IGRlZ1tpLTFdOwoJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCgkJY291dCA8PCAoZGVnW2luW2ldXSA9PSAwKSA8PCAnXG4nOwp9CiAKaW50IG1haW4oKQp7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7Cglpbml0KCk7Cglzb2x2ZSgpOwp9