最短路 - 九度 OJ 1447

博客介绍了如何解决九度 OJ 1447 题目中的最短路径问题,通过Floyd算法和Dijkstra算法进行详细讲解。Floyd算法具有O(N^3)的时间复杂度,适合小规模图的全源最短路问题,而Dijkstra算法适用于邻接链表或矩阵,逐个确定节点的最短路径。
摘要由CSDN通过智能技术生成

最短路 - 九度 OJ 1447

题目

时间限制:1 秒 内存限制:128 兆 特殊判题:否
题目描述:
在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的! 所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?
输入:
输入包括多组数据。每组数据第一行是两个整数N、 M (N<=100,M<=10000), N 表示成都的大街上有几个路口,标号为 1 的路口是商店所在地,标号为 N 的 路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来 M 行,每行包括 3 个整数 A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口 A 与路口 B 之间有一条路,我们的工作人员需要 C 分钟的时间走过这条路。输入 保证至少存在1条商店到赛场的路线。
当输入为两个0时,输入结束。
输出:
对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间。
样例输入:
2 1
1 2 3
3 3
1 2 5
2 3 5
3 1 2
0 0
样例输出:
3
2

Floyd算法

首先分析复杂度,Floyd算法主要包括 一个三重循环,每重循环的循环次数均是N,这样 Floyd算法的时间复杂度为O (N^3),空间复杂度为O(N^2),其中N均为图中结点的个数。在本题中N最大值为100,N^3的时间复杂度尚在可以接受的范围内。

#include <stdio.h>

int ans[101][101];//二维数组,其初始值即为该图的邻接矩阵

int main()
{
    int n,m;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值