if (endv < n && endv >=0 )//如果目的点只有一个,那么只求出出发点到这个目的点的最短路径 { string mmm = ""; int j = endv; while(j > -1 ) { string nnn = name[j].na ; nnn+=mmm; mmm=" "+nnn; j = pp[j]; } cout<<"从 "<<name[v].na<<" 到 "<<name[endv].na<<" 的最短路程为:"<<dist[endv]<<"公里 途经:"<<mmm<<endl; } else//求出起始点到所有点的最短路径 { for(i=0; i<n; i++) { string mmm = ""; int j = i; while(j > -1 ) { string nnn = name[j].na ; nnn+=mmm; mmm=" "+nnn; j = pp[j]; } cout<<"从 "<<name[v].na<<" 到 "<<name[i].na<<" 的最短路程为:"<<dist[i]<<"公里 途经:"<<mmm<<endl; } } }
时间: 2024-02-16 12:26:21 浏览: 80
已知出发点和目的点的最短路径算法
3星 · 编辑精心推荐
这段代码是Dijkstra算法的输出部分,用于输出起始节点到目的节点(或者所有节点)的最短路径和路径长度。如果目的节点只有一个,那么只输出起始节点到该节点的最短路径和路径长度;否则,遍历所有节点,输出起始节点到每个节点的最短路径和路径长度。其中,变量endv表示目的节点的编号,变量name表示每个节点的名称,变量dist表示起始节点到各个节点的最短距离,变量pp表示每个节点的前驱节点,变量mmm表示路径的名称,变量nnn表示当前节点的名称。
阅读全文