#include <bits/stdc++.h>
#define pii pair<int, int>
using namespace std;
int n,k;
int res[200005],vis[200005];
vector<int>e[200005],dis[200005];
void add(int f, int t) { e[f].push_back(t), e[t].push_back(f); }
bool check(int x, int y) { return x - y == 1 || y - x == 1; }
int main() {
	scanf("%d",&n);
	for(int i=1,u,v;i<n;++i){
		scanf("%d%d",&u,&v);
		add(u,v);
	}scanf("%d",&k);
	int mn=100000000;
	for(int i=1,u;i<=k;++i){
		scanf("%d",&u);
		scanf("%d",res+u);
		mn=min(res[u],mn),vis[u]=1;
	}for(int i=1;i<=n;++i)
		if(vis[i])dis[res[i]-mn].push_back(i);
	for(int i=0;i<n;++i)
		for(int j=dis[i].size()-1,u;j>=0;--j)
			for(int t=e[u=dis[i][j]].size()-1,v;t>=0;--t)
				if(!vis[v=e[u][t]])
					res[v]=res[u]+1,dis[i+1].push_back(v),vis[v]=1;
	for(int u=1;u<=n;++u)
		for(int i=e[u].size()-1,v;i>=0;--i)
			if(!check(res[u],res[e[u][i]]))return puts("No"),0;
	puts("Yes");
	for(int u=1;u<=n;++u)printf("%d\n",res[u]);
	return 0;
}