5008 2023. 04. 09 01:42:11 TomaSajt Bürokrácia (40) cpp17 Elfogadva 40/40 21ms 7080 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
  cin.tie(0), ios::sync_with_stdio(0);
  int n;
  cin >> n;
  vector<int> in_deg(n + 1);
  vector<int> target(n + 1, -1);
  vector<bool> removed(n + 1);
  for (int i = 1; i <= n; i++) {
    char c;
    cin >> c;
    if (c == 'R')
      continue;
    int t;
    cin >> t;
    target[i] = t;
    in_deg[t]++;
  }
  queue<int> q;
  for (int i = 1; i <= n; i++) {
    if (in_deg[i] == 0)
      q.push(i);
  }
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    if (target[u] == -1 || removed[target[u]])
      continue;
    removed[target[u]] = true;

    int tt = target[target[u]];
    if (tt == -1)
      continue;

    in_deg[tt]--;
    if (in_deg[tt] == 0) {
      q.push(tt);
    }
  }
  cout << count(removed.begin() + 1, removed.end(), false) << endl;
  for (int i = 1; i <= n; i++) {
    if (!removed[i])
      cout << i << ' ';
  }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 3ms 1972 KiB
2 Elfogadva 1/1 2ms 2188 KiB
3 Elfogadva 1/1 3ms 2340 KiB
4 Elfogadva 1/1 3ms 2548 KiB
5 Elfogadva 1/1 14ms 5188 KiB
6 Elfogadva 1/1 19ms 4396 KiB
7 Elfogadva 1/1 18ms 4612 KiB
8 Elfogadva 2/2 19ms 5056 KiB
9 Elfogadva 2/2 20ms 5204 KiB
10 Elfogadva 2/2 21ms 5528 KiB
11 Elfogadva 2/2 21ms 5836 KiB
12 Elfogadva 2/2 14ms 6108 KiB
13 Elfogadva 2/2 14ms 6108 KiB
14 Elfogadva 2/2 20ms 6020 KiB
15 Elfogadva 2/2 18ms 6364 KiB
16 Elfogadva 2/2 14ms 6520 KiB
17 Elfogadva 2/2 14ms 6716 KiB
18 Elfogadva 2/2 14ms 6660 KiB
19 Elfogadva 2/2 14ms 6956 KiB
20 Elfogadva 2/2 14ms 6972 KiB
21 Elfogadva 2/2 13ms 7080 KiB
22 Elfogadva 2/2 18ms 6076 KiB
23 Elfogadva 4/4 21ms 6572 KiB