rt
数组已经至少开大十倍了,还是挂了/kel
#include<bits/stdc++.h>
#define N 2000005
using namespace std;
int n,m,a[N],b[N],cnt,fir[N],tg[N];
struct E{ int nex,to;}e[N<<1];
void add(int,int),dfs(int,int);
signed main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i) scanf("%d",&a[i]);
for(int i=1;i<=m;++i) scanf("%d",&b[i]),add(a[i],b[i]);
tg[a[1]]=1,dfs(a[1],1);
printf("Yes");
return 0;
}
void add(int a,int b){ e[++cnt].nex=fir[a],e[cnt].to=b,fir[a]=cnt,e[++cnt].nex=fir[b],e[cnt].to=a,fir[b]=cnt;}
void dfs(int no,int ta){
int nt=ta&1?2:1;
for(int i=fir[no];i;i=e[i].nex){
int v=e[i].to;
if(tg[v]&&tg[v]!=nt){ printf("No"); exit(0);}
if(tg[v]) continue;
tg[v]=nt,dfs(v,nt);
}
}