49832023-04-08 14:02:12TomaSajtDinókcpp17Elfogadva 100/10094ms27140 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
  cin.tie(0), ios::sync_with_stdio(0);

  int n, m;
  cin >> n >> m;

  // dependency graph where edge `i-->j` means `j` depends on `i`
  // `i = 2 * a` is the appearance of the `a` species
  // `i = 2 * a + 1` is the extinction of the `a` species
  vector<vector<int>> g(2 * n);

  // number of dependencies of node `i`
  vector<int> deps(2 * n);

  auto makeEdge = [&](int u, int v) {
    g[u].push_back(v);
    deps[v]++;
  };

  for (int i = 0; i < n; i++) {
    // `i` had to have appeared before going extinct
    makeEdge(2 * i, 2 * i + 1);
  }

  while (m--) {
    int op, a, b;
    cin >> op >> a >> b;
    --a, --b;
    if (op == 1) {
      // `b` appeared before `a` went extinct
      makeEdge(2 * b, 2 * a + 1);
      // `a` appeared before `b` went extinct
      makeEdge(2 * a, 2 * b + 1);
    } else {
      // `a` went extinct before `b` appeared
      makeEdge(2 * a + 1, 2 * b);
    }
  }

  // try to traverse DAG

  queue<int> q;
  for (int i = 0; i < n; i++) {
    if (deps[2 * i] == 0) {
      q.push(2 * i);
    }
  }

  int t = 0;
  vector<int> pos(2 * n);
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    pos[u] = ++t;
    for (int v : g[u]) {
      if (--deps[v] == 0) {
        q.push(v);
      }
    }
  }

  // if not all nodes were traversed, it is impossible
  if (t != 2 * n) {
    cout << "NEM";
    return 0;
  }

  cout << "IGEN";
  for (int i = 0; i < n; i++) {
    cout << '\n' << pos[2 * i] << ' ' << pos[2 * i + 1];
  }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1824 KiB
2Elfogadva3ms2016 KiB
3Elfogadva4ms3184 KiB
subtask25/5
4Elfogadva90ms23456 KiB
5Elfogadva59ms22696 KiB
6Elfogadva50ms22776 KiB
subtask315/15
7Elfogadva3ms3128 KiB
8Elfogadva3ms3296 KiB
9Elfogadva3ms3388 KiB
10Elfogadva3ms3472 KiB
11Elfogadva3ms3476 KiB
12Elfogadva3ms3480 KiB
subtask410/10
13Elfogadva3ms3500 KiB
14Elfogadva2ms3588 KiB
15Elfogadva3ms3688 KiB
16Elfogadva2ms3692 KiB
17Elfogadva2ms3684 KiB
subtask535/35
18Elfogadva3ms3928 KiB
19Elfogadva3ms4136 KiB
20Elfogadva85ms27080 KiB
21Elfogadva86ms26912 KiB
22Elfogadva3ms3916 KiB
23Elfogadva3ms4240 KiB
24Elfogadva65ms26940 KiB
subtask635/35
25Elfogadva93ms25184 KiB
26Elfogadva92ms25376 KiB
27Elfogadva86ms25568 KiB
28Elfogadva82ms25512 KiB
29Elfogadva68ms26536 KiB
30Elfogadva94ms26112 KiB
31Elfogadva92ms25732 KiB
32Elfogadva75ms26516 KiB
33Elfogadva71ms27140 KiB
34Elfogadva85ms26056 KiB
35Elfogadva71ms25712 KiB