#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 500005;
vector<int> adj[N]; // Adjacency list for the tree
int a[N]; // Values at nodes
int subtree_size[N]; // Subtree sizes
map<int, int> freq; // Frequency map
int n;
void dfs(int node, int parent, map<int, int>& count, string& result) {
count[a[node]]++; // Increment frequency of value at this node
subtree_size[node] = 1;
// Traverse children
for (int child : adj[node]) {
if (child == parent) continue;
map<int, int> child_count;
dfs(child, node, child_count, result);
// Merge smaller map into the larger one for efficiency
if (child_count.size() > count.size()) swap(child_count, count);
for (auto [key, val] : child_count) count[key] += val;
subtree_size[node] += subtree_size[child];
}
// Check for majority condition
int majority_threshold = subtree_size[node] / 2;
bool is_majority = false;
for (auto [value, count_val] : count) {
if (count_val > majority_threshold) {
is_majority = true;
break;
}
}
result[node - 1] = (is_majority ? '1' : '0'); // Convert to 0-based index
}
void solve() {
cin >> n;
// Reset adjacency list for each test case
for (int i = 1; i <= n; i++) {
adj[i].clear();
}
// Read values at each node
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
// Read edges
for (int i = 1; i < n; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
string result(n, '0');
map<int, int> count;
dfs(1, -1, count, result);
cout << result << '\n';
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludCBsb25nIGxvbmcKCmNvbnN0IGludCBOID0gNTAwMDA1OwoKdmVjdG9yPGludD4gYWRqW05dOyAgIC8vIEFkamFjZW5jeSBsaXN0IGZvciB0aGUgdHJlZQppbnQgYVtOXTsgICAgICAgICAgICAgLy8gVmFsdWVzIGF0IG5vZGVzCmludCBzdWJ0cmVlX3NpemVbTl07ICAvLyBTdWJ0cmVlIHNpemVzCm1hcDxpbnQsIGludD4gZnJlcTsgICAvLyBGcmVxdWVuY3kgbWFwCmludCBuOwoKdm9pZCBkZnMoaW50IG5vZGUsIGludCBwYXJlbnQsIG1hcDxpbnQsIGludD4mIGNvdW50LCBzdHJpbmcmIHJlc3VsdCkgewogICAgY291bnRbYVtub2RlXV0rKzsgIC8vIEluY3JlbWVudCBmcmVxdWVuY3kgb2YgdmFsdWUgYXQgdGhpcyBub2RlCiAgICBzdWJ0cmVlX3NpemVbbm9kZV0gPSAxOwogICAgCiAgICAvLyBUcmF2ZXJzZSBjaGlsZHJlbgogICAgZm9yIChpbnQgY2hpbGQgOiBhZGpbbm9kZV0pIHsKICAgICAgICBpZiAoY2hpbGQgPT0gcGFyZW50KSBjb250aW51ZTsKICAgICAgICAKICAgICAgICBtYXA8aW50LCBpbnQ+IGNoaWxkX2NvdW50OwogICAgICAgIGRmcyhjaGlsZCwgbm9kZSwgY2hpbGRfY291bnQsIHJlc3VsdCk7CiAgICAgICAgCiAgICAgICAgLy8gTWVyZ2Ugc21hbGxlciBtYXAgaW50byB0aGUgbGFyZ2VyIG9uZSBmb3IgZWZmaWNpZW5jeQogICAgICAgIGlmIChjaGlsZF9jb3VudC5zaXplKCkgPiBjb3VudC5zaXplKCkpIHN3YXAoY2hpbGRfY291bnQsIGNvdW50KTsKICAgICAgICAKICAgICAgICBmb3IgKGF1dG8gW2tleSwgdmFsXSA6IGNoaWxkX2NvdW50KSBjb3VudFtrZXldICs9IHZhbDsKICAgICAgICAKICAgICAgICBzdWJ0cmVlX3NpemVbbm9kZV0gKz0gc3VidHJlZV9zaXplW2NoaWxkXTsKICAgIH0KCiAgICAvLyBDaGVjayBmb3IgbWFqb3JpdHkgY29uZGl0aW9uCiAgICBpbnQgbWFqb3JpdHlfdGhyZXNob2xkID0gc3VidHJlZV9zaXplW25vZGVdIC8gMjsKICAgIGJvb2wgaXNfbWFqb3JpdHkgPSBmYWxzZTsKICAgIAogICAgZm9yIChhdXRvIFt2YWx1ZSwgY291bnRfdmFsXSA6IGNvdW50KSB7CiAgICAgICAgaWYgKGNvdW50X3ZhbCA+IG1ham9yaXR5X3RocmVzaG9sZCkgewogICAgICAgICAgICBpc19tYWpvcml0eSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIAogICAgcmVzdWx0W25vZGUgLSAxXSA9IChpc19tYWpvcml0eSA/ICcxJyA6ICcwJyk7ICAvLyBDb252ZXJ0IHRvIDAtYmFzZWQgaW5kZXgKfQoKdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBuOwogICAgCiAgICAvLyBSZXNldCBhZGphY2VuY3kgbGlzdCBmb3IgZWFjaCB0ZXN0IGNhc2UKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGFkaltpXS5jbGVhcigpOwogICAgfQoKICAgIC8vIFJlYWQgdmFsdWVzIGF0IGVhY2ggbm9kZQogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICB9CgogICAgLy8gUmVhZCBlZGdlcwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayh1KTsKICAgIH0KCiAgICBzdHJpbmcgcmVzdWx0KG4sICcwJyk7CiAgICBtYXA8aW50LCBpbnQ+IGNvdW50OwogICAgZGZzKDEsIC0xLCBjb3VudCwgcmVzdWx0KTsKCiAgICBjb3V0IDw8IHJlc3VsdCA8PCAnXG4nOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7CiAgICAKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIAogICAgcmV0dXJuIDA7Cn0K
NAozCjEgMiAzCjEgMwoyIDMKNAozIDEgMSAzCjEgMgoyIDMKNCAyCjQKMiA0IDQgMgoxIDIKMiAzCjMgNAoxMwoxIDQgNCA3IDQgNyAxIDEgNyAxMSAxMSAxMSAxMQoxIDIKMiAzCjMgNAo0IDUKNCA2CjIgNwo3IDgKMiA5CjYgMTAKNSAxMQoxMSAxMgoxMCAxMwo=
4
3
1 2 3
1 3
2 3
4
3 1 1 3
1 2
2 3
4 2
4
2 4 4 2
1 2
2 3
3 4
13
1 4 4 7 4 7 1 1 7 11 11 11 11
1 2
2 3
3 4
4 5
4 6
2 7
7 8
2 9
6 10
5 11
11 12
10 13