用Dijkstra打印出第二短路径的路径.以及第二第二路径

Printing out Path of second shortest path with Dijkstra. and second second path

本文关键字:路径 Dijkstra 打印      更新时间:2023-10-16

我正试图找到DIJKSTRA中第二短的路径。假设我有下面的顶点和它们之间的连接。a: c(19(f(34(i(58(l(94(o(108(p(104(b: a(46(d(47(e(36(j(82(p(88(q(91(r(96(c: h(57(j(49(l(84(m(106(d: j(44(l(82(r(80(e: d(22(q(88(r(79(t(93(f: b(53(d(19(s(93(g: h(36(j(102(o(64(p(65(h: a(60(d(56(f(46(i(26(l(47(s(64(i: c(56(d(48(h(28(p(50(j: c(51(i(58(m(108(k: c(68(g(96(i(51(j(34(l(55(s(77(t(77(l: b(76(c(84(e(69(g(64(j(73(k(58(q(25(r(44(t(36(m: f(93(i(63(n: h(61(i(64(l(40(p(28(q(29(o: d(95(e(84(k(71(q(16(p: b(85(d(90(g(67(h(57(j(84(o(17(q: i(58(n(28(o(15(s(11(t(12(r: e(78(j(57(l(42(n(72(s(61(t(63(s: c(104(d(105(e(90(o(16(q(10(t: a(119(f(94(i(64(l(36(m(31(n(28(

这是我如何找到最短路径和第二短路径的代码。

for (int count= 0; count < V-1; count++)
{
int u = minDis(dist, sptSet);
sptSet[u] = true;
for (int v = 0; v < V; v++)
{
if (!sptSet[v] && graph[u][v] && dist[u] != INT_MAX && dist[u] + graph[u][v] < dist[v])
{
secDist[v] = dist[v];
path[v] = u;
dist[v] = dist[u] + graph[u][v];
countVertices++;
}
else if(!sptSet[v] && graph[u][v] && dist[u] != INT_MAX &&        dist[u] + graph[u][v] < secDist[v])
{
secDist[v] = dist[u] + graph[u][v];
secCountVertices++;
}
}
}

我得到了第二短路径的正确距离和访问的节点总数,即130长度和path(a l t(,我也得到了第二短路径的长度,即131,但我不知道如何打印出第二最短路径。提前感谢!!

我认为本教程将为您指明正确的方向,因为"printSolution(("似乎打印出了路径