Floyd-Warshall 算法

来源:互联网 发布:迅雷影音mac官方下载 编辑:程序博客网 时间:2024/06/06 19:56
//Floyd-Warshall 算法 -> 来自啊哈算法 #include <stdio.h>int main(){    int e[10][10],n,m,t1,t2,t3;    int inf = 99999999;    scanf("%d %d",&n,&m);//定点数和边数     for(int i = 1;i <= n;i++)        for(int j = 1; j <= n;j++)            if(i == j)e[i][j] = 0;                else e[i][j] = inf;    //读入边     for(int i = 1;i <= m;i++)    {        scanf("%d %d %d",&t1,&t2,&t3);        e[t1][t2] = t3;    }    //核心     //从1~k中转,if(i->j的距离 大于 i经过 k 再到 j 的距离)则更新i->j的距离     for(int k = 1;k <= n;k++)        for(int i = 1;i <= n;i++)            for(int j = 1;j <= n;j++)                if(e[i][k] < inf && e[k][j] < inf                     && e[i][j] > e[i][k] + e[k][j])                    e[i][j] = e[i][k] + e[k][j];    //输出     for(int i = 1;i <= n;i++)    {        for(int j = 1; j <= n;j++)        {            printf("%10d",e[i][j]);        }        printf("\n");    }    return 0;}
0 0
原创粉丝点击