1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| #include<stdio.h>
int map[4][100];
int f(int a,int b) {
if(a==1)
return b==2?3:2;
if(a==2)
return b==1?3:1;
if(a==3)
return b==1?2:1;
}
bool judge(int n,int t1,int t2) {
if(n==0)
return true;
for(int i=0; i<map[0][f(t1,t2)]; i++)
if(map[f(t1,t2)][i]==n)
return false;
for(int i=0; i<map[0][t1]; i++)
if(map[t1][i]==n)
return judge(n-1,f(t1,t2),t1);
for(int i=0; i<map[0][t2]; i++)
if(map[t2][i]==n)
return judge(n-1,f(t1,t2),t2);
}
int main() {
int T;
scanf("%d",&T);
while(T--) {
int n;
scanf("%d",&n);
scanf("%d",&map[0][1]);
for(int i=0; i<map[0][1]; i++)
scanf("%d",&map[1][i]);
scanf("%d",&map[0][2]);
for(int i=0; i<map[0][2]; i++)
scanf("%d",&map[2][i]);
scanf("%d",&map[0][3]);
for(int i=0; i<map[0][3]; i++)
scanf("%d",&map[3][i]);
printf("%s\n",judge(n,1,3)?"true":"false");
}
return 0;
}
|