比赛 “Asm.Def战记之夏威夷”杯 评测结果 AAAAAAAAAA
题目名称 Asm.Def的病毒 最终得分 100
用户昵称 fyb 运行时间 0.161 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-11-06 08:31:38
显示代码纯文本
#include <cstdio>
#include <vector>

using namespace std;

#define NMAX 1000

vector<int> g[NMAX+1];
bool path1[NMAX+1],path2[NMAX+1];

bool dfs(int ind,int pa,bool path[],int t){
	int i;

	if(ind==t)return path[ind]=true;
	for(i=0;i<g[ind].size();i++)
		if(g[ind][i]!=pa)
			if(dfs(g[ind][i],ind,path,t))return path[ind]=true;
	return false;
}

int main(){
	int n,q;
	int ta,tb;
	int s1,t1,s2,t2;
	int i,j;

	freopen("asm_virus.in","r",stdin);
	freopen("asm_virus.out","w",stdout);

	scanf("%d%d",&n,&q);
	for(i=1;i<n;i++){
		scanf("%d%d",&ta,&tb);
		g[ta].push_back(tb);
		g[tb].push_back(ta);
	}

	for(i=0;i<q;i++){
		scanf("%d%d%d%d",&s1,&t1,&s2,&t2);
		for(j=0;j<=n;j++)path1[j]=path2[j]=false;
		dfs(s1,0,path1,t1);
		dfs(s2,0,path2,t2);
		for(j=1;j<=n;j++)
			if(path1[j]&&path2[j]){
				printf("YES\n");
				break;
			}
			if(j>n)printf("NO\n");
	}
	return 0;
}