Future dependency resolution graph

Write codeHard30 min

Your task

Resolve a graph of futures. nodes is a list of [id, kind, deps, latency]. kind is 'value' (an immediately-available leaf, deps empty) or 'combine' (resolves only after ALL of its deps resolve). A 'value' node resolves at time = latency. A 'combine' node resolves at time = (max of its deps' resolution times) + latency. There are no cycles. Return the list of [id, resolution_time] sorted by resolution_time ascending, breaking ties by ascending id.

Examples

resolve_futures(nodes: list[list]) -> list[list]
Example 1
Inputresolve_futures([[1, "value", [], 5], [2, "value", [], 3], [3, "combine", [1, 2], 2]])
Output[[2, 3], [1, 5], [3, 7]]