#include<bits/stdc++.h>
using namespace std;
#define pb push_back
int N,K;
vector<int>G[111111];
vector<int>P[1111111];
int ans[111111];
bool F[111111];
int main()
{
	scanf("%d",&N);
	for(int i=0;i<N;i++){
		ans[i]=-1;F[i]=false;
	}
	for(int i=0;i<N-1;i++){
		int A,B;
		scanf("%d%d",&A,&B);A--;B--;
		G[A].pb(B);
		G[B].pb(A);
	}
	scanf("%d",&K);
	for(int i=0;i<K;i++){
		int v,p;
		scanf("%d%d",&v,&p);v--;
		P[p].pb(v);ans[v]=p;F[v]=true;
	}
	for(int i=0;i<1111111;i++){
		for(int j=0;j<(int)P[i].size();j++){
			//P[i][j]
			int now=P[i][j];
			//printf("%d:",now);
			if(ans[now]==-1){
				ans[now]=i;
			}
			for(int k=0;k<(int)G[now].size();k++){
				//printf("%d ",G[now][k]);
				if(ans[G[now][k]]==-1){
					if(!F[G[now][k]]){
						P[i+1].pb(G[now][k]);F[G[now][k]]=true;
					}
				}
				else if(ans[G[now][k]]-i!=1&&ans[G[now][k]]-i!=-1){
					printf("No\n");
					return 0;
				}
			}
			//printf("\n");
		}
	}
	printf("Yes\n");
	for(int i=0;i<N;i++){
		printf("%d\n",ans[i]);
	}
	return 0;
}
