比赛 |
“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;
}