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