#include <iostream>
#include <fstream>
#include <queue>
#include <cmath>
#include <string>
using namespace std;
vector<int> vis;
int convert(int n,string s){
int x=0;
for(int i=0;i<n;i++){
x+=(s[i]-'0')*((int)1<<(n-i-1));
}
return x;
}
queue<int> q;
int main(){
int n,k,x=0,y=0;
string s;
cin>>n>>k>>s;
x=convert(n,s);
cin>>s;
y=convert(n,s);
vis.resize((int)pow(2,n),0);
for(int i=0;i<k;i++){
cin>>s;
vis[convert(n,s)]=-1;
}
q.push(x);
vis[x]=1;
while(!q.empty()){
if(vis[y]==1){
break;
}
int p=q.front();
q.pop();
for(int i=0;i<n;i++){
int p1;
if(p&(1<<(i))){
p1=p-(1<<(i));
}
else{
p1=p+(1<<(i));
}
if(vis[p1]==0){
vis[p1]=1;
q.push(p1);
}
}
}
if(vis[y]==1){
cout<<"TAK";
}
else{
cout<<"NIE";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |