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
答案 0 :(得分:2)
征税:
任何货物经过一个城市,除了来源和目的地城市。
如果你有路径,那么你就是这样的:
a - > b - > c - > d
然后你应该包括路径的成本(a,b)+税(b)+(b,c)+税(c)+(c,d)。
要在算法中实现这一点,您应该能够将城市税添加到路径长度,如下所示:
如果你知道你是从a开始并在d结束,那么任何指向城市x的定向路径,其中x不是a或b,都应该被视为x +城市x的税费。
您需要将路径成本值还原为原始值,以便计算下一个要计算其值的路径,并为新的起点和目的地重新添加税值。