Submission #1324706

#TimeUsernameProblemLanguageResultExecution timeMemory
1324706fr1tzyTales of seafaring (POI13_mor)C++20
0 / 100
1266 ms102544 KiB
#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int n, m, k;
  cin >> n >> m >> k;
  vector<vector<int>> g(n);
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    --a;
    --b;
    g[a].push_back(b);
    g[b].push_back(a);
  }
  const uint16_t INF = 65535;
  vector<uint16_t> distance((size_t)n * n * 2, INF);
  vector<uint16_t> d(2 * n);
  queue<int> q;
  for (int s = 0; s < n; s++) {
    fill(d.begin(), d.end(), INF);
    while (!q.empty())
      q.pop();
    d[0 * n + s] = 0;
    q.push(0 * n + s);
    while (!q.empty()) {
      int st = q.front();
      q.pop();
      int par = st / n;
      int v = st % n;
      uint16_t current = d[st];
      for (int t : g[v]) {
        int ns = (1 - par) * n + t;
        if (d[ns] == INF) {
          d[ns] = (uint16_t)(current + 1);
          q.push(ns);
        }
      }
    }
    for (int j = 0; j < n; j++) {
      size_t b = ((size_t)s * n + (size_t)j) * 2;
      distance[b + 0] = d[0 * n + j];
      distance[b + 1] = d[1 * n + j];
    }
  }
  for (int i = 0; i < k; i++) {
    int s, j;
    long long D;
    cin >> s >> j >> D;
    --s;
    --j;
    int par = (int)(D % 1LL);
    uint16_t need = distance[((size_t)s * n + (size_t)j) * 2 + par];
    if (need != INF && D >= need)
      cout << "TAK\n";
    else
      cout << "NIE\n";
  }
  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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...