#include<bits/stdc++.h>
#pragma comment(linker, "/STACK:16000000")
#define PI 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
#define ii pair<int,int>
using namespace std;
const int inf=0x3f3f3f3f;
const long long inf2=0x3f3f3f3f3f3f3f3f;
const double eps=1e-6;
const int mod=1000000007;
vector<int> g[111111];
int d[111111];
int main(){
	memset(d,-1,sizeof(d));
	int n;
	cin>>n;
	for(int i=0;i<n-1;i++){
		int a,b;
		cin>>a>>b;
		g[a].push_back(b);
		g[b].push_back(a);
	}
	int q2;
	cin>>q2;
	priority_queue<ii,vector<ii>,greater<ii> >q;
	while(q2--){
		int a,b;
		cin>>a>>b;
		d[a]=b;
		q.push(make_pair(d[a],a)); 
	}
	while(!q.empty()){
		ii x=q.top();
		q.pop();
		for(int i=0;i<g[x.second].size();i++){
			if(d[g[x.second][i]]==-1){
				d[g[x.second][i]]=x.first+1;
				q.push(make_pair(d[g[x.second][i]],g[x.second][i]));
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<g[i].size();i++)if(abs(d[i]-d[g[i][j]])!=1){
			puts("NO");
			return 0;
		}
	}
	puts("YES");
	for(int i=1;i<=n;i++)cout<<d[i]<<endl;
	#ifndef ONLINE_JUDGE
        printf("Time: %d ms\n", (int)(clock() * 1000/ CLOCKS_PER_SEC));
    #endif
	return 0;
}
