#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 60;
const int MAX_K = 1000000;
int n, k;
int st, crt, nxt, 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;
}
queue<int> q;
void bfs(){
vizited[st] = true;
q.push(st);
while(!q.empty()){
crt = q.front();
q.pop();
for(int i=0; i < n; i++){
nxt = (crt ^ (1 << i));
if(vizited[nxt] == false && blocked[nxt] == false){
vizited[nxt] = true;
q.push(nxt);
}
}
}
}
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;
}
bfs();
if(vizited[dr] == true)
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... |