UVA#523最低运输成本

时间:2012-05-20 13:46:48

标签: java graph-theory path-finding shortest-path

UVA链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=464

我迷失了我现在所做的事情。我不知道为什么我会产生不正确的值。我寻找最短路径后打印出阵列。它产生了这个:

[0, 3, 8, 8, 4]
[3, 0, 5, 11, 7]
[8, 5, 0, 9, 12]
[8, 11, 9, 0, 4]
[4, 7, 12, 4, 0]

示例输入为:

1

0 3 22 -1 4
3 0 5 -1 -1
22 5 0 9 20
-1 -1 9 0 4
4 -1 20 4 0
5 17 8 3 1
1 3
3 5
2 4

通过样本输入,我产生输出:

From 1 to 3 :
Path: 1-->2-->3

Total cost :8
From 3 to 5 :
Path: 3-->2-->5
Total cost :12

From 2 to 4 :
Path: 2-->5-->4
Total cost :11

如果我查看我的阵列,它似乎是正确的。但正确的答案是:

From 1 to 3 :
Path: 1-->5-->4-->3
Total cost : 21

From 3 to 5 :
Path: 3-->4-->5
Total cost : 16

From 2 to 4 :
Path: 2-->1-->5-->4
Total cost : 17

我想我错过了添加税,但我不知道在哪里添加税。我尝试在执行最短路径时向tax[j]添加path[i][j],然后减去tax[x-1]tax[y-1]x-1是我的来源,{{1}是我的目的地)。它不起作用,弄乱我的路径数组(它给循环赋值;我真的不需要它)。我真的不知道把税收放在哪里。

以下是我的参考代码:

y-1

1 个答案:

答案 0 :(得分:2)

征税:

  

任何货物经过一个城市,除了来源和目的地城市。

如果你有路径,那么你就是这样的:

a - > b - > c - > d

然后你应该包括路径的成本(a,b)+税(b)+(b,c)+税(c)+(c,d)。

要在算法中实现这一点,您应该能够将城市税添加到路径长度,如下所示:

如果你知道你是从a开始并在d结束,那么任何指向城市x的定向路径,其中x不是a或b,都应该被视为x +城市x的税费。

您需要将路径成本值还原为原始值,以便计算下一个要计算其值的路径,并为新的起点和目的地重新添加税值。