下面的图片是我在三星面试中被问到的问题的表示。我必须编写程序来查找I和M之间的最小距离。有一个额外的约束条件,我们可以改变其中一条边。例如,边FM可以移动以连接边L和M,并且边值仍将为4。
如果您注意到,通过I->E->F->G->M的路径,I和M之间的距离为20。然而,如果我们改变其中一条边,使得L到M的边值现在为4。我们现在必须移动边FM以连接L和M。通过这种方法,I和M之间的距离为20。
任意的边u,v可以改变为u,t或t,v。它不能改变为x,y。因此,边缘中的一个顶点必须相同。
请查看下面的图片以说明情况-
如果您注意到,通过I->E->F->G->M的路径,I和M之间的距离为20。然而,如果我们改变其中一条边,使得L到M的边值现在为4。我们现在必须移动边FM以连接L和M。通过这种方法,I和M之间的距离为20。
任意的边u,v可以改变为u,t或t,v。它不能改变为x,y。因此,边缘中的一个顶点必须相同。
请查看下面的图片以说明情况-
我的问题是我需要为此编写程序。为了找到两个顶点之间的最小距离,我考虑使用Djikstra算法。然而,我不确定如何处理额外的约束条件,即我可以更改其中一个顶点的选项。如果我能得到一些帮助来解决这个问题,我会非常感激。
(u, v)
并将其更改为(u, t)
或(t, v)
,其中t
是任意顶点? - kraskevich