题目链接:https://ac.nowcoder.com/acm/contest/948/B
题意:
中文题,不再描述。
分析:
模拟很简单,首先看a能否直接到b,然后看a能否先到b以后的城市,然后再回到b。
dfs,根据给出的信息,建立一个图,然后从a遍历一下,看能否到b
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int a[N], b[N];
int main()
{
int n, x;
while(scanf("%d %d", &n, &x) != EOF)
{
for(int i=1; i<=n; i++)
{
scanf("%d", &a[i]);
}
for(int i=1; i<=n; i++)
scanf("%d", &b[i]);
if(a[1] == 0)
printf("NO\n");
else if(a[1] && a[x])
printf("YES\n");
else{
bool flag = false;
for(int j=x+1; j<=n; j++)
{
if(a[1] && a[j] && b[j] && b[x])
{
printf("YES\n");
flag = 1;
break;
}
}
if(!flag)
printf("NO\n");
}
}
return 0;
}