Submission #1143149

#TimeUsernameProblemLanguageResultExecution timeMemory
1143149bogdanpetrescu2006Walk (POI13_spa)C++20
24 / 100
165 ms185088 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...