Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- bool rpta;
- void bfs(vector<vector<int>> v, queue<int> q, vector<int> rec, int ini){
- rec[ini] = 1;
- q.push(ini);
- while(q.size()!=0){
- int n = q.front();
- q.pop();
- vector<int> aux;
- vector<int> aux2;
- for(int i = 0; i < v[n].size(); i++){
- if(rec[v[n][i]]==0){
- rec[v[n][i]] = 1;
- aux.push_back(v[n][i]);
- }
- }
- for(int i = 0; i < aux.size();i++){
- int aa = q.front();
- aux2.push_back(aa);
- q.pop();
- }
- for(int i = 0; i< aux2.size();i++){
- bool found = false;
- for(int j = 0; j < aux.size();j++){
- if(aux2[i]==aux[j]){
- found = true;
- }
- }
- if(!found){
- rpta = false;
- return;
- }
- }
- for(int i = 0; i < aux2.size();i++){
- q.push(aux2[i]);
- }
- }
- }
- int main(){
- int n,x,y,aux;
- rpta = false;
- cin >> n;
- vector<vector<int>> v(n);
- queue<int> valid;
- vector<int> rec(n,0);
- queue<int> q;
- for(int i = 1; i < n; i++){
- cin >> x >> y;
- v[x].push_back(y);
- }
- for(int i = 0; i < n; i++){
- cin >> aux;
- valid.push(aux);
- }
- int ini = valid.front();
- valid.pop();
- bfs(v,q,rec,ini);
- rpta ? cout << "Yes" : cout << "No";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement