最短路径的算法大致可以分为三种,不过每一种的算法都有所不同
在时间复杂度、空间复杂度、负权、有负权的边、是否可以检验有没有负权或者带负权的边
这个算法比较简单,暴力解决,时间复杂度为pow(n,3);空间复杂度为pow(n,2);可以处理负权和带负权边的算法
//最短路径(1)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[10][10];
int m,n;
cin>>m>>n;
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
if(i==j)a[i][j]=0;
else a[i][j]=9999;
for(int i=1;i<=n;i++)
{
int x,y,t;
cin>>x>>y>>t;
a[x][y]=t;
}
for(int k=1;k<=m;k++)
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
if(a[i][j]>a[i][k]+a[k][j])
a[i][j]=a[i][k]+a[k][j];
for(int i=1;i<=m;i++)
{
for(int j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
运算结果
看不懂 ?联系博主(qq3100310659)备注:c++学习(不备注就不给通过)