Submission #1143350

#TimeUsernameProblemLanguageResultExecution timeMemory
1143350lucamiscociWalk (POI13_spa)C++20
12 / 100
98 ms5960 KiB
#include <iostream>

using namespace std;

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

int marked[kmax + 1];
int val[kmax + 1];
int a, b;
int mask;
  string step;
  string start , finish;

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

  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...