塔子哥需要在多个业务节点之间选择最快的逃生节点,同时考虑各节点的剩余业务容量。输入包括一个网络时延矩阵,表示节点之间的通信延迟,以及一个剩余容量列表,表示每个节点的可用业务容量。在发生节点故障时,塔子哥需要找到一个或多个逃生节点,确保逃生路径的延迟最小,并且这些节点的总容量足够容纳故障节点的业务量。如果有多个合适的逃生节点,优先选择编号较小的节点;如果没有节点满足条件,则返回所有容量足够的节点。
本题是个阅读理解,读懂了就应该会发现其实就是考察了最短路怎么求。
以故障点为源点求完最短路后,根据距离从小到大排序后,依次选取即可。
小明需要多个业务节点之间选择最快的逃生节点集,并考虑每个节点的剩余业务容量。业务节点之间的关系可以看作一个图。小明有一个网络时延表,表示每个节点到其他节点的通信延迟,即小明从某节点逃到另一节点所需要的时间;还有一个剩余业务容量表,表示每个节点的剩余业务容量。在一个节点故障时,需要选择一个或多个逃生节点,确保逃生路径的时延最小,并且逃生节点集各节点剩余容量的总和足够容纳故障节点的业务量,当故障节点与多个节点最短距离相同,优先选择编号较小的节点容灾,如果逃生节点集中多个节点最短距离相同时按编号从小到大的顺序排列。
第1行n表示业务节点数, 2<=n<=10000,节点编号从 0 开始,依次递增;
第2到1+n行表示业务节点间的网络时延矩阵表 delayMatrix,delayMatrix[i][j] 表示节点i到节点j的通信时延;
1)如果节点i和节点j之间没有直接相连的边,则 delayMatrix[i][j] 为 -1,第i个节点和它自己也没有边,所以delayMatrix[i][i]=−1
2)节点间有边时延范围为 1<=delayMatrix[i][j]<=1000,矩阵元素间使用空格分割 另,输入保证 delayMatrix[i][j]==delayMatrix[j][i]
第2+n行表示各业务节点的剩余容量表 remainingCapacity,其中 remainingCapacity[i] 表示节点 i 的剩余业务容量,业务量的范围1<=remainingCapacity[i]<=100,数组元素间使用空格分割;
第3+n行表示故障业务节点编号 faultyNode,表示发生故障的节点,取值范围为 0<=faultyNode<=n−1 ;
第4+n行表示受损业务节点需要迁移的业务量, 受损业务量的范围 (0−1000] 。
返回符合条件的逃生路径节点编号列表,用空格分隔。当所有节点都不够故障节点业务容灾时候,输出所有容灾节点。
输入
4
-1 5 -1 8
5 -1 1 3
-1 1 -1 4
8 3 4 -1
10 20 15 25
2
12
输出
1