比赛 20120612 评测结果 AAAAAAAAAA
题目名称 石木游戏 最终得分 100
用户昵称 Czb。 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-06-12 18:16:00
显示代码纯文本
#include<stdio.h>
#include<vector>
#include<queue>

using namespace std;

int n,m,k,ans,a[10001];

bool flag[10001];

vector <int> v[10001];

queue <int> q;

int main()
{
	freopen("rocks.in","r",stdin);
	freopen("rocks.out","w",stdout);
	int i,j,x,y;
	scanf("%d%d%d",&n,&m,&k);
	for(i=2;i<=n;i++)
	{
		scanf("%d%d",&x,&a[i]);
		a[i]=a[i]%(k+1);
		v[x].push_back(i);
	}
	q.push(1);
	while(!q.empty())
	{
		x=q.front();
		for(i=0;i<v[x].size();i++)
		{
			q.push(v[x][i]);
			flag[v[x][i]]=!flag[x];
		}
		q.pop();
	}
	for(i=1;i<=n;i++)
	{
		if(flag[i])
		{
			ans^=a[i];
		}
	}
	for(i=1;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		if(flag[x])
		{
			ans^=a[x];
			a[x]=y%(k+1);
			ans^=a[x];
		}
		if(ans)printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}