#include using namespace std; #define fi first #define sc second #define pii pair #define pdd pair #define pb push_back #define umap unordered_map #define mset multiset #define pq priority_queue #define ull unsigned long long #define i128 __int128 #define ld long double #define fixs fixed< g[maxn]; void dfs(int u){ if(ls[u]) res[ls[u]]+=res[u],dfs(ls[u]); if(rs[u]) res[rs[u]]+=res[u],dfs(rs[u]); } void solve(){ cin>>n,d.init(n*2),cnt=n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1,u,v;i>u>>v,g[u].pb(v),g[v].pb(u); for(int i=1;i<=n;i++){ for(int j:g[i]){ if(j>i) continue; int fu=d.find(i),fv=d.find(j); ls[++cnt]=fu,rs[cnt]=fv,d.merge(fu,cnt),d.merge(fv,cnt); } res[d.find(i)]++; } dfs(d.find(1)); // for(int i=1;i<=n;i++) cerr<>t; while(t--) solve(); return 0; } /* Samples input: output: THINGS TODO: 检查freopen,尤其是后缀名 检查空间 检查调试语句是否全部注释 */