#include #include using namespace std; int n,k,i,x,y,ma,j,a[305],b[305],s[10004],c[10004]; struct nod { int nr; nod *urm; }*p,*v[10004]; void add(nod *&d,int x) { nod *p; p=new nod; p->nr=x; p->urm=d; d=p; } void BFS(int x,int y) { nod *p; s[1]=x; int l=1; c[x]=0; int z=0; for(int i=1;i<=l&&z==0;i++) for(p=v[s[i]];p!=0;p=p->urm) if(c[p->nr]==-1) { c[p->nr]=c[s[i]]+1; if(p->nr==y){z=1;break;} l++; s[l]=p->nr; } } int main() { //freopen("input","r",stdin); //freopen("output","w",stdout); scanf("%d %d",&n,&k); for(i=1;i<=k;i++) scanf("%d",&a[i]); for(j=1;j<=k;j++) scanf("%d",&b[j]); for(i=1;i<=n-1;i++) { scanf("%d %d",&x,&y); add(v[x],y); add(v[y],x); } for(i=1;i<=k;i++) { memset(c,-1,sizeof(c)); BFS(a[i],b[i]); if(ma