5007 2023. 04. 09 01:05:07 TomaSajt Tom és Jerry 1 (80) cpp17 Elfogadva 80/80 224ms 17912 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
  cin.tie(0), ios::sync_with_stdio(0);
  int n, m, tom_start, attempts, goal;
  cin >> n >> m >> tom_start >> attempts >> goal;
  vector<vector<int>> graph(n + 1), tom_graph(n + 1);
  while (m--) {
    int u, v, s;
    cin >> u >> v >> s;
    graph[u].push_back(v);
    graph[v].push_back(u);
    if (s == 2) {
      tom_graph[u].push_back(v);
      tom_graph[v].push_back(u);
    }
  }

  vector<int> dist_from_tom(n + 1, INT_MAX);
  queue<int> tq;
  tq.push(tom_start);
  dist_from_tom[tom_start] = 0;
  while (!tq.empty()) {
    int u = tq.front();
    tq.pop();
    for (auto v : tom_graph[u]) {
      if (dist_from_tom[v] != INT_MAX)
        continue;
      dist_from_tom[v] = dist_from_tom[u] + 1;
      tq.push(v);
    }
  }
  vector<bool> can_jerry_start_at(n + 1);
  can_jerry_start_at[goal] = true;
  priority_queue<array<int, 2>> pq;
  pq.push({dist_from_tom[goal], goal});
  while (!pq.empty()) {
    auto [u_t, u] = pq.top();
    pq.pop();
    if (u_t < 0)
      continue;
    can_jerry_start_at[u] = true;
    for (int v : graph[u]) {
      if (can_jerry_start_at[v])
        continue;
      // jerry should be at position `v`
      // not later than `T = dist_from_tom[v] - 1` to avoid getting caught
      // not later than `T = u_t - 1` so that they can step to `u` right after
      pq.push({min(dist_from_tom[v] - 1, u_t - 1), v});
    }
  }

  while (attempts--) {
    int jerry_start;
    cin >> jerry_start;
    cout << (can_jerry_start_at[jerry_start] ? "IGEN" : "NEM") << endl;
  }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 80/80
1 Elfogadva 0/0 3ms 1992 KiB
2 Elfogadva 0/0 4ms 2596 KiB
3 Elfogadva 4/4 3ms 2456 KiB
4 Elfogadva 4/4 3ms 2664 KiB
5 Elfogadva 4/4 3ms 2672 KiB
6 Elfogadva 4/4 3ms 2804 KiB
7 Elfogadva 4/4 3ms 3064 KiB
8 Elfogadva 4/4 4ms 3388 KiB
9 Elfogadva 4/4 4ms 3784 KiB
10 Elfogadva 4/4 4ms 4024 KiB
11 Elfogadva 4/4 16ms 4996 KiB
12 Elfogadva 4/4 8ms 5564 KiB
13 Elfogadva 4/4 28ms 7304 KiB
14 Elfogadva 4/4 59ms 10228 KiB
15 Elfogadva 4/4 224ms 17720 KiB
16 Elfogadva 4/4 41ms 14740 KiB
17 Elfogadva 4/4 61ms 14644 KiB
18 Elfogadva 4/4 82ms 12956 KiB
19 Elfogadva 4/4 64ms 13780 KiB
20 Elfogadva 4/4 65ms 13496 KiB
21 Elfogadva 4/4 50ms 11484 KiB
22 Elfogadva 4/4 157ms 17912 KiB