只要C中有1 便可构造任何自然数,否则只能构造偶数。。
m<=0 时NO;
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <stack>
using namespace std;
#define clr(a, x) memset(a, x, sizeof(a))
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define REP(i,a,b) for(int i=a;i<=b;i++)
typedef __int64 lld;
const int maxn = 100010;
const int mod = 1000000007;
int T[maxn],C[maxn];
bool vis[maxn];
int main()
{
int n,q;
while(~scanf("%d%d",&n,&q))
{
REP(i,1,n) scanf("%d",&T[i]);
int flag=0;
REP(i,1,n)
{
scanf("%d",&C[i]);
if(C[i]&1) flag=1;
}
/* memset(vis,0,sizeof(vis));
int flag=0;
REP(i,1,n)
{
if(vis[i]) continue;
if(C[i]&1)
{
for(int j=i;;j=T[j])
{
vis[j]=1;
if(vis[T[j]])
{
flag=1;
break;
}
}
if(flag) break;
}
}*/
while(q--)
{
int m;
scanf("%d",&m);
if(m<1) puts("NO");
else
{
if(flag) puts("YES");
else
{
if(m&1) puts("NO");
else puts("YES");
}
}
}
}
}