leetcode

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

0851.cpp (779B)


0 class Solution {
1 public:
2 vector<int> loudAndRich(vector<vector<int>> &richer, vector<int> &quiet) {
3 const int n = quiet.size();
4 vector<vector<int>> adj(n);
5 vector<int> count(n);
6 vector<int> res(n);
7 iota(res.begin(), res.end(), 0);
9 for (auto &p : richer) {
10 adj[p[0]].push_back(p[1]);
11 count[p[1]]++;
12 }
14 queue<int> q;
15 for (int i = 0; i < n; i++)
16 if (!count[i]) q.push(i);
18 while (!q.empty()) {
19 int crnt = q.front();
20 q.pop();
21 for (int &c : adj[crnt]) {
22 if (quiet[res[c]] > quiet[res[crnt]]) res[c] = res[crnt];
23 if (!--count[c]) q.push(c);
24 }
25 }
26 return res;
27 }
28 };