听灌佬多(WA#12求调)
  • 板块灌水区
  • 楼主libu2333
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/1/20 13:11
  • 上次更新2025/1/20 15:30:12
查看原帖
听灌佬多(WA#12求调)
1475943
libu2333楼主2025/1/20 13:11

rt,CF1037D

#include<bits/stdc++.h>
#define f first
#define s second
#define pii pair<int,int>
using namespace std;
const int MAXN=3e5+10;
vector<int> t[MAXN];
int n,u,v,x,st[MAXN];
queue<int> o;
bool check_bfs(){
	queue<int> q;
	q.push(1);
	o.pop();
	int sum1=0;
	while(q.size()&&o.size()){
		int a=q.front(),b=o.front();
		//cout<<"father "<<a<<",child "<<b<<'.'<<endl;
		if(find(t[a].begin(),t[a].end(),b)==t[a].end()){
			if(sum1!=t[a].size()) {
				//cout<<"skipped."<<endl;
				return false;
			}
			else{
				q.pop();
				sum1=0;
				//cout<<"new father "<<q.front()<<'.'<<endl;
			}
		}else{
			q.push(b);
			sum1++;
			//cout<<"OK"<<", "<<b<<" enqueue."<<endl;
			o.pop();
		}
	}
	return true;
}
int main(){
	cin>>n;
	memset(st,0,sizeof st);
	for(int i=1;i<n;i++){
		cin>>u>>v;
		t[u].push_back(v);
	}
	for(int i=0;i<n;i++){
		cin>>x;
		o.push(x);
	}
	if(o.front()!=1){
		//cout<<"Root isn't 1, skipped."<<endl;
		cout<<"No"<<endl;
		return 0;
	}
	cout<<(check_bfs()?"Yes":"No")<<endl;
	
	return 0;
}
2025/1/20 13:11
加载中...