A. Three Doorshttps://codeforces.com/contest/1709/problem/AA. Three Doors
time limit per test
2 seconds
memory limit per test
256 megabytes
There are three doors in front of you, numbered from 11 to 33 from left to right. Each door has a lock on it, which can only be opened with a key with the same number on it as the number on the door.
There are three keys — one for each door. Two of them are hidden behind the doors, so that there is no more than one key behind each door. So two doors have one key behind them, one door doesn't have a key behind it. To obtain a key hidden behind a door, you should first unlock that door. The remaining key is in your hands.
Can you open all the doors?
Input
The first line contains a single integer tt (1≤t≤181≤t≤18) — the number of testcases.
The first line of each testcase contains a single integer xx (1≤x≤31≤x≤3) — the number on the key in your hands.
The second line contains three integers a,ba,b and cc (0≤a,b,c≤30≤a,b,c≤3) — the number on the key behind each of the doors. If there is no key behind the door, the number is equal to 00.
Values 1,21,2 and 33 appear exactly once among x,a,bx,a,b and cc.
Output
For each testcase, print "YES" if you can open all the doors. Otherwise, print "NO".
Example
input
Copy
4 3 0 1 2 1 0 3 2 2 3 1 0 2 1 3 0
output
Copy
YES NO YES NO
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int k;
int a[5];
cin>>k;
for(int i=1;i<=3;i++)
{
cin>>a[i];
}
int i,f=0;
for(i=1;i<=2;i++)
{
if(a[k]!=0)
{
k=a[k];
}
else
{
f=1;
cout<<"NO"<<endl;
break;
}
}
if(f==0)
{
cout<<"YES"<<endl;
}
}
}