不知道为什么错了
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,u,o,c,a[200001];
bool d[200001];
vector<int> v[200001];
bool bfs(int s){
int l=2;
queue<int> q;
q.push(s);
d[s]=1;
while(!q.empty()){
int t=q.front();
q.pop();
//cout<<t<<':'<<v[t].size()<<"=>"<<l<<'~'<<l+v[t].size()-1<<endl;
for(int j=l;j<l+v[t].size();j++){
if(d[a[j]]) continue;
bool fou=0;
int p;
for(int i=0;i<v[t].size();i++){
if(a[j]==v[t][i]) fou=1,p=j;
}
if(!fou) return 0;
q.push(a[j]),d[a[j]]=1;
}
l+=v[t].size();
}
return 1;
}
int main(){
cin>>n;
for(int i=1;i<=n-1;i++){
cin>>u>>o;
v[u].push_back(o);
}
for(int i=1;i<=n;i++){
cin>>a[i];
}
if(bfs(a[1])) cout<<"Yes";
else cout<<"No";
return 0;
}