Loud and Rich

In a group of N people (labelled0, 1, 2, ..., N-1), each person has different amounts of money, and different levels of quietness.

For convenience, we'll call the person with labelx, simply "personx".

We'll say thatricher[i] = [x, y]if personx definitely has more money than person y. Note thatricher may only be a subset of valid observations.

Also, we'll sayquiet[x] = qif personx has quietnessq.

Now, returnanswer, whereanswer[x] = yifyis the least quiet person (that is, the personywith the smallest value ofquiet[y]), among all people who definitely have equal to or more money than personx.

Example 1:

Input: 
richer = 
[[1,0],[2,1],[3,1],[3,7],[4,3],[5,3],[6,3]]
, quiet = 
[3,2,5,4,6,1,7,0]
Output: 
[5,5,2,5,4,5,6,7]
Explanation: 

answer[0] = 5.
Person 5 has more money than 3, which has more money than 1, which has more money than 0.
The only person who is quieter (has lower quiet[x]) is person 7, but
it isn't clear if they have more money than person 0.

answer[7] = 7.
Among all people that definitely have equal to or more money than person 7
(which could be persons 3, 4, 5, 6, or 7), the person who is the quietest (has lower quiet[x])
is person 7.

The other answers can be filled out with similar reasoning.

Note:

分析

DFS建图,比自己大的放list。dfs list里选quiet最小的。也是带memo的

简缩版

扩展板DFS

BFS

富点跟一串穷点。富点入度0,topo排序

res[]里指向的是比他富切比他安静的人

Last updated

Was this helpful?