零信任通道同时带时延和风险消耗,求额度内的最小时延。这是带一维资源约束的最短路:状态必须是 (节点,已用风险),而不能只对每个节点保留一个最短时延。
原因:先走到某点的「更短路径」可能已经把额度花光,另一条较慢但更省额度的路径才能继续走向终点。样例 3 就是这种情况。
边权时延为正,在状态图上做 Dijkstra:
零信任网关要把一次会话从入口节点 src 转到目标服务 dst。安全域之间有若干有向转发通道,第 i 条记为 edges[i]=[u,v,delay,risk]:
会话开始时拥有风险额度 riskBudget。一条路径合法,当且仅当路径上所有通道的 risk 之和不超过 riskBudget。路径时延为各通道 delay 之和。
请返回:在额度内从 src 到达 dst 的最小时延。若没有任何合法路径,返回 −1。
补充约定:
请实现:
minTrustDelay(n: int, edges: int[][], src: int, dst: int, riskBudget: int) -> int
五行:
n,节点数edges,每一项为 [u, v, delay, risk]srcdstriskBudget约束:
一个整数:最小合法时延;不可达时为 −1。
输入:
3
[[0, 1, 5, 3], [1, 2, 4, 2], [0, 2, 20, 1]]
0
2
5
输出:
9
说明:路径 0→1→2 时延 9、风险 5,额度刚好够;直达 0→2 时延 20 更大。
输入:
3
[[0, 1, 5, 3], [1, 2, 4, 2], [0, 2, 20, 1]]
0
2
4
输出:
20
说明:额度改为 4 后,0→1→2 的风险 5 超标,只能走直达。
输入:
4
[[0, 1, 1, 8], [0, 2, 5, 1], [2, 1, 1, 1], [1, 3, 1, 3]]
0
3
5
输出:
7
说明:走 0→1→3 时延更小,但风险 11 超标。必须绕 0→2→1→3(时延 7、风险 5)。若到达节点 1 时只保留「时延最小」的那次(风险已用 8),会误判不可达。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册