#include #include #include #include using namespace std; const long long int MAXN = 50010; long long int test1, n, P[MAXN], C[MAXN], Visited[MAXN], Parent[MAXN], u, v, DP1[MAXN], DP2[MAXN]; vector E[MAXN]; void dfs(long long int u) { assert(Visited[u] == 0); Visited[u] = 1; //cout<<"Visiting: "< Children; long long int dp2sum=0; for(int i=0;i>test1; for(int qq=1;qq<=test1;qq++) { cin>>n; for(int i=1;i<=n;i++) { E[i].clear(); Parent[i] = -2; Visited[i] = 0; } for(int i=1;i>u>>v; E[u].push_back(v); E[v].push_back(u); } for(int i=1;i<=n;i++) cin>>P[i]; for(int i=1;i<=n;i++) { cin>>C[i]; assert( (1<=C[i]) && (C[i]<=E[i].size()) ); } Parent[1] = -1; dfs(1); cout<