제출 #1324724

#제출 시각아이디문제언어결과실행 시간메모리
1324724fr1tzy새로운 문제 (POI13_mor)C++20
80 / 100
1522 ms196608 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

const int INF = 10001;
void s() {
  int n, m, k;
  cin >> n >> m >> k;
  vector<int> d[n];
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    d[--a].push_back(--b);
    d[b].push_back(a);
  }
  int distance[n][n][2];
  memset(distance, 0x3f, sizeof(distance));
  for (int i = 0; i < n; i++) {
    queue<array<int, 2>> q;
    q.push({i, 0});
    distance[i][i][0] = 0;
    while (!q.empty()) {
      auto [u, p] = q.front();
      q.pop();
      for (int v : d[u]) {
        if (distance[i][v][p ^ 1] < INF)
          continue;
        distance[i][v][p ^ 1] = distance[i][u][p] + 1;
        q.push({v, p ^ 1});
      }
    }
  }
  while (k--) {
    int a, b, c;
    cin >> a >> b >> c;
    --a;
    --b;
    if (distance[a][b][c & 1] > INF||distance[a][b][c&1]>c||(a==b&&d[a].size()==0)){
        cout << "NIE" << '\n';
      }
    else {
      cout << "TAK" << '\n';
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  int t = 1;
  while (t--)
    s();
  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...