제출 #1143130

#제출 시각아이디문제언어결과실행 시간메모리
1143130Luca_Girbovan새로운 문제 (POI13_spa)C++20
12 / 100
195 ms11476 KiB
#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 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...