leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

3310.cpp (1262B)


0 static const auto _ = [] {
1 ios::sync_with_stdio(0);
2 cin.tie(0);
3 return 0;
4 }();
6 class Solution {
7 public:
8 vector<int> remainingMethods(int n, int k, const vector<vector<int>> &invocations) const {
9 static bool seen[100001];
10 vector<vector<int>> invoke(n);
12 memset(seen, 0x00, sizeof(seen));
13 for (const auto &in : invocations) {
14 invoke[in[0]].push_back(in[1]);
15 }
17 queue<int> q;
18 q.emplace(k);
19 seen[k] = true;
20 while (!q.empty()) {
21 const int root = q.front();
22 q.pop();
23 for (const auto next : invoke[root]) {
24 if (seen[next]) continue;
25 seen[next] = true;
26 q.emplace(next);
27 }
28 }
30 for (int i = 0; i < n; i++) {
31 if (seen[i]) continue;
32 for (const auto in : invoke[i]) {
33 if (seen[in]) {
34 vector<int> res(n);
35 iota(begin(res), end(res), 0);
36 return res;
37 }
38 }
39 }
41 vector<int> res;
42 for (int i = 0; i < n; i++) {
43 if (seen[i]) continue;
44 res.emplace_back(i);
45 }
47 return res;
48 }
49 };