给你n个点,n条边,每个点的出度至少为1。显然,这个图一定有环,因为最糟糕的情况是在一棵树上连接任意两点构成一个环。
容易证明,如果有一个点的权值为1的话,则可以构成任何数字,若所有点的权值都不为1,都为2的话,只能构成偶数。
//time:93ms
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int i,n,q,t,flag;
while(scanf("%d%d",&n,&q)==2) {
i=n;
while(i--)
scanf("%d",&t);
i=n;
flag=0;
while(i--) {
scanf("%d",&t);
if(1==t)
flag=1;
}
while(q--) {
scanf("%d",&t);
if(t<=0) printf("NO\n");
else if(flag) printf("YES\n");
else if(t&1) printf("NO\n");
else printf("YES\n");
}
}
}