求助为什么RE#11
  • 板块CF1037D Valid BFS?
  • 楼主Andy_L
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/23 19:34
  • 上次更新2023/11/2 11:41:13
查看原帖
求助为什么RE#11
460429
Andy_L楼主2023/10/23 19:34

RT,提示 Exit code is -1073741819

#include <bits/stdc++.h>

using namespace std;

#define int long long
#define fi first
#define se second
#define forz(i,a,b) for(register int i((a));i<=(b);++i)
#define forn(i,a,b) for(register int i((a));i>=(b);--i)

inline int read()
{
	int x=0,f=1;
	char ch=getchar();
	while (ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
	return x*f;
}

int n;

const int maxn=2e5+100;

//==================build edge==================//

struct node{
	int to;
	int nxt;
}edge[maxn];
int head[maxn];

int e;

inline void add(int x,int y)
{
	edge[++e].to=y;
	edge[e].nxt=head[x];
	head[x]=e; 
}
inline void add_edge(int x,int y)
{
	add(x,y);
	add(y,x);
}

int dep[maxn],fa[maxn];

void dfs(int k,int f)
{
    dep[k] = dep[f] + 1;
    fa[k] = f;
    for(int i = head[k]; i; i = edge[i].nxt) 
	{
        int u = edge[i].to;
        if(u == f) continue;
        dfs(u, k);
    }
}
int a[maxn],id[maxn],b[maxn];

signed main()
{
	n=read();
	forz(i,1,n-1)
	{
		int x=read(),y=read();
		add_edge(x,y);
	}
	forz(i,1,n) a[i]=read();
	dfs(a[1],0);
	forz(i,2,n) if(dep[a[i]]<dep[a[i-1]]) return cout<<"No",0;
	forz(i,1,n) id[a[i]]=i;
    forz(i,1,n) b[i]=fa[a[i]];
    int len=unique(b+1,b+n+1)-b-1;
    forz(i,1,len) if(id[b[i]]<id[b[i-1]]) return cout<<"No",0;
    cout<<"Yes";
	return 0;
}
2023/10/23 19:34
加载中...