Floyd算法

来源:互联网 发布:服务器调度算法 编辑:程序博客网 时间:2024/06/13 11:13

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;}


1 0
原创粉丝点击