Submission #1143293

#TimeUsernameProblemLanguageResultExecution timeMemory
1143293lucamiscociWalk (POI13_spa)C++20
0 / 100
0 ms320 KiB
#include <iostream>

using namespace std;

const int nmax = 60;
const int kmax = 1e6;
  int n, k;

int marked[nmax + 1];
int val[kmax + 1];
int a, b;

int conversion (string &s){
  int output;
  for (int i = 0; i < 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);
  }

  for (int i = 0; i < n; i++){
    if (marked[node ^ (1 << i)] == false && val[node ^ (1 << i)] == false)
        dfs (node ^ (1 << i));
  }
}

int main(){


  cin >> n >> k;
  string step;
  string start , finish;
  cin >> start;

  a = conversion(start);

  cin >> finish;
  b = conversion(finish);
  for (int i = 0; i < k; i++){
    cin >> step;
    int 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...