#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 60;
const int MAX_K = 1000000;
int n, k;
int st, crt, dr;
bool vizited[10000000], blocked[10000000];
string start, finish, mask;
int string2nr(string &s){
int val = 0;
for(int i=0; i < (int)s.size(); i++)
if(s[i] == '1')
val += (1<<i);
return val;
}
void dfs(int crt){
vizited[crt] = true;
if(crt == dr){
cout<<"TAK";
exit(0);
}
for(int i=0; i < n; i++)
if(vizited[(crt ^ (1 << i))] == false && blocked[(crt ^ (1 << i))] == false)
dfs((crt ^ (1 << i)));
}
int main (){
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
cin>>n>>k;
cin>>start;
st = string2nr(start);
cin>>finish;
dr = string2nr(finish);
for(int i=1; i<=k; i++){
cin>>mask;
crt = string2nr(mask);
blocked[crt] = true;
}
dfs(st);
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... |