更新
This commit is contained in:
+10
-2
@@ -79,6 +79,7 @@ int main(void)
|
||||
#endif
|
||||
|
||||
// 输入顶点数和边数
|
||||
printf("请输入顶点数n和边数m:");
|
||||
int n, m;
|
||||
if (scanf("%d %d", &n, &m) != 2)
|
||||
{
|
||||
@@ -93,31 +94,38 @@ int main(void)
|
||||
{
|
||||
g->arcs[i] = (int *)malloc((size_t)n * sizeof(int));
|
||||
for (int j = 0; j < n; ++j)
|
||||
{
|
||||
g->arcs[i][j] = (i == j) ? 0 : MaxInt;
|
||||
}
|
||||
}
|
||||
|
||||
// 输入边信息
|
||||
for (int i = 0; i < m; ++i)
|
||||
{
|
||||
printf("请输入第%d条边的顶点x、y和边权z:", i + 1);
|
||||
int x, y, z;
|
||||
if (scanf("%d %d %d", &x, &y, &z) != 3)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (x >= 1 && x <= n && y >= 1 && y <= n)
|
||||
{
|
||||
if (z < g->arcs[x - 1][y - 1])
|
||||
{
|
||||
g->arcs[x - 1][y - 1] = z;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 调用Dijkstra算法
|
||||
ShortestPath_DIJ(g, 0);
|
||||
if (D[n - 1] >= MaxInt)
|
||||
{
|
||||
printf("-1\n");
|
||||
printf("从顶点0到顶点%d不存在路径\n", n - 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("%d\n", D[n - 1]);
|
||||
printf("从顶点0到顶点%d的最短路径长度为:%d\n", n - 1, D[n - 1]);
|
||||
}
|
||||
|
||||
// 释放内存
|
||||
|
||||
Reference in New Issue
Block a user