1.Floyd(适合点少的稠密图)
for (int l=1;l<=n;++l)
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
e[i][j]=min(e[i][j],e[i][l]+e[l][j]);
2.Dijkstra
#define INF 233333333
for(int i=1;i<n;i++){
int min=INF,ls;
for(int j=1;j<=n;j++)
if(!vis[j]&&e[1][j]<min){
min=e[1][j];
ls=j;
}
vis[ls]=1;
for(int j=1;j<=n;i++)
if(e[ls][j]!=INF)
e[1][j]=min(e[1][j],e[1][ls]+e[ls][j]);
}
3.Ford
for(int i=1;i<n;i++)
for(int j=1;j<=m;j++)
if(e[m].u+e[j].w<dis[e[m].v])
dis[v]=dis[u]+w[j];
4.SPFA==bfs
do {
int k=bfs.front();
for(int i=d[k]; i; i=e[i].next)
if(dis[to[i]]>dis[k]+e[to[i]].w) {
dis[to[i]]=dis[k]+e[to[i]].w;
bfs.push(to[i]); }
bfs.pop(); }
while(!bfs.empty());