Submission #1143365

#TimeUsernameProblemLanguageResultExecution timeMemory
1143365lucamiscociWalk (POI13_spa)C++20
0 / 100
164 ms327680 KiB
#include <iostream>

using namespace std;

const int kmax = 1e6;
int n, k;
bool marked[kmax + 1];
bool val[kmax + 1];
int a, b;
int mask;
string step;
string start , finish;

int conversion (string &s){
  int output = 0;
  for (int i = 0; i < (int) s.size(); i++){
    if (s[i] == '1')
      output += (1 << i);
  }
  return output;
}



void dfs (int node){
  marked[node] = true;
  if (node == b){
    cout << "TAK";
    exit(0);
  }
  int i;
  for (i = 0; i < n; i++){
    if (marked[node ^ (1 << i)] == false && val[node ^ (1 << i)] == false)
    if (node^(1 << i) == b){
      cout << "TAK";
      exit(0);
    }
        dfs (node ^ (1 << i));
  }
}

int main(){

  cin >> n >> k;

  cin >> start;

  a = conversion(start);

  cin >> finish;
  b = conversion(finish);
  for (int i = 0; i < k; i++){
    cin >> step;
    mask = conversion (step);
    val[mask] = true;
  }

  dfs (a);
  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...