比赛 “Asm.Def战记之夏威夷”杯 评测结果 RRRRRRRRRR
题目名称 Asm.Def的病毒 最终得分 0
用户昵称 dududu 运行时间 0.003 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2015-11-06 11:43:44
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<stack> 
using namespace std;
int N,Q,x,flag1=1;
vector<int> son[1001];
int vis1[1000+10],vis[1000+10];
void read()
{
	cin>>N>>Q;
	for(int i=1;i<N;i++)
	{
		int u,v;
		cin>>u>>v;
		son[u].push_back(v);
		son[v].push_back(u);
		vis[i]=1; 
		vis1[i]=1;
	}
	vis[N]=1;
	vis1[N]=1;
}
void sovle(int s,int t,int flag)
{
	vis[s]=0;
	if(s==t) 
	{
		vis[t]=0;
		flag=0;
		return;
	}
		for(int i=0;i<son[s].size();i++)
		{
			if(vis[son[s][i]])
			{
				vis[son[s][i]]=0;
				sovle(son[s][i],t,flag);
				if(flag) vis[son[s][i]]=1;
				else return;  
			}
		}
}
void search(int s,int t,int flag)
{
	vis1[s]=0;
	if(s==t)
	{
		vis1[t]=0;
		x=flag=0;
		return;
	}
	if(son[s].size()==1&&vis1[son[s][0]]==0) return;
	for(int j=0;j<son[s].size();j++)
	{
		if(vis1[son[s][j]])
		{
			vis1[son[s][j]]=0;
			search(son[s][j],t,flag);
			if(flag) vis1[son[s][j]]=1;
			else return;
		}
	}
}
int main()
{
	read();
	for(int w=1;w<=Q;w++)
	{
		int s,t,s1,t1;
		cin>>s>>t>>s1>>t1;
		sovle(s,t,1);
		search(s1,t1,1);
		int flag=1;
		x=flag;
		for(int k=1;k<=N;k++)
		{
			if(vis[k]==0&&vis1[k]==0)
			{
				flag=0;
				cout<<"YES"<<endl;
				break;
			}
		}
		if(flag) cout<<"NO"<<endl;
		memset(vis,1,sizeof(vis));
		memset(vis1,1,sizeof(vis1));
	} 
	return 0;
}