根据题目条件,从富人向穷人连边,然后按照拓扑排序并跟新ans[x]和ans[y], 这样一定能找出答案。
原因是有如下关系:如果rich[x] > rich[y], 并且quite[ans[x]] < quites[ans[y]], 那么ans[y] = ans[x],其中x需要已经被计算出来,因此需要拓扑排序。
class Solution {
public:
vector<int> loudAndRich(vector<vector<int>>& richer, vector<int>& quiet) {
int n = quiet.size();
vector<vector<int>> g(n);
vector<int> inDeg(n);
for (auto r : richer) {
g[r[0]].push_back(r[1]);
inDeg[r[1]]++;
}
queue<int> q;
for (int i = 0; i < n; i++) {
if (in