o(n的立方)算法 求任意两点之间的最短路
//任意两点之间的最短路
#include<cstring>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<stdlib.h>
using namespace std;
const int Max=11000;
const int INF=1000001;
int g[Max][Max];
int main()
{
int i,j;
int n,m;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
g[i][j]=i==j?0:INF;
for(i=0;i<m;i++)
{
int l,r,w;
scanf("%d%d%d",&l,&r,&w);
g[l][r]=g[r][l]=min(w,g[l][r]);
}
for(int k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(g[j][i]<INF&&g[k][j]<INF)
g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(g[i][j]!=INF)
printf("%d\n",g[i][j]);
}
return 0;
}