#include <bits/stdc++.h>
#define int long long
#define pb push_back
using namespace std;

vector<int> adj[1010];
int price[1010];
bool mark[1010];
int cena=0;
void dfs(int node, int depth){
	mark[node]=true;
	for(int i=0; i<adj[node].size(); i++){
		if(!mark[adj[node][i]]){
			dfs(adj[node][i], depth+1);
		}
	}
	cena+=price[node]*depth;
}

signed main(){
	int n;
	cin >> n;
	for(int i=0; i< n-1; i++){
		int x, y;
		cin >> x >> y;
		adj[x].pb(y);
		adj[y].pb(x);
	}
	for(int i=1; i<= n; i++){
		cin >> price[i];
	}
	int q;
	cin >> q;
	if(q==0){
		int ans=1e18;
		for(int i=1; i<=n; i++){
			dfs(i, 0);
			ans=min(ans, cena);
			cena=0;
			for(int j=1; j<=n; j++){
				mark[j]=false;
			}
		}
		cout << ans << '\n';
	}
	else{
		cout << "MPQRC\n";
	}
}