题目描述:
如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。
输入格式:
第一行包含三个整数 n,m,s分别表示点的个数、有向边的个数、出发点的编号。
接下来 m 行每行包含三个整数 u,v,w表示一条 u →v 的,长度为 w 的边。
输出格式:
输出一行 n 个整数,第 i 个表示 s 到第 i 个点的最短路径,若不能到达则输出 2^31-1。
输入输出样例:
输入:
4 6 1
1 2 2
2 3 2
2 4 1
1 3 5
3 4 3
1 4 4
输出:
0 2 4 3
分析&说明:
学习了基础的松弛操作后,我们来学习最朴素的Floyd算法:
#include<iostream>
#include<cstdio>
using namespace std;
long long a[7005][7005],s,n,m,u,v,d;
const int inf=0x7fffffff;
int main()
{
cin>>n>>m>>s;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
a[i][j]=inf;
//把邻接矩阵数组重置为inf
}
}
for(int i=1;i<=m;i++)
{