在有向图或无相同中求全源最短路径
#include<bits/stdc++.h>
using namespace std;
const int INF=100000000;
const int maxv=200;//根据需要改
int n,m;
int dis[maxv][maxv];//记录数组
void Floyed()
{
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(dis[i][k]!=INF&&dis[k][j]!=INF&&dis[i][k]+dis[k][j]<dis[i][j])
dis[i][j]=dis[i][k]+dis[k][j];
}
int main()
{
int u,v,w;
fill(dis[0],dis[0]+maxv*maxv,INF);
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) dis[i][i]=0;//重要初始化
for(int i=0;i<m;i++)
{//输入
scanf("%d%d%d",&u,&v,&w);
dis[u][v]=w;//邻接矩阵
//dis[v][u]=w;//若是无向图 要加这一句
}
Floyed();//入口
for(int i=0;i<n;i++){//输出 邻接矩阵
for(int j=0;j<n;j++)
printf("%d ",dis[i][j]);
printf("\n");
}
return 0;
}