zoukankan      html  css  js  c++  java
  • 弗洛伊德算法

    1.算法适用的问题

       这个算法是通过一个图的权值矩阵来求解任意两个点之间的最短权值矩阵。通俗的说也就是求解任意两个点直接的最短路径。
    2.使用的是什么样的数据结构
      这里个算法使用的就是用数组存储数据,用一个数组来保存权值,另外一个数组来保存经过每一个最短路径的点。
    3.具体的思路
      具体的思路是通过遍历所有的点,使用了一个类似于状态转移方程,就是每次都比较一个原值和其他的路径组成的最短路径,从而得出最短的路径的权值。遍历是通过三个互相嵌套的for循环来表示的。这三个循环是有一定的规则的,这里里面的两个循环的是用来遍历所有的点,最外层是用来挑选点的,这里的挑选点的话是挑选有没有哪一个点能够让两个点之间的距离变得更加的小。
     
     
    源代码
    #include<cstdio>
    #include<cstring>
    #include<iostream>
     
    using namespace std;
     
    const int INF=100000;
     
    int main()
    {
        int m,n;
        int dic[100][100],pic[100][100];
        while(scanf("%d%d",&m,&n)==2)
        {
            int i,j,k;
            for(i=1;i<=m;i++)
            {
                for(j=1;j<=m;j++)
                {
                    dic[i][j]=INF;
                    pic[i][j]=j;
                }
            }
            int x,y,z;
            for(i=0;i<n;i++)
            {
                scanf("%d%d%d",&x,&y,&z);
                dic[x][y]=z;
                dic[y][x]=z;
            }
            for(k=1;k<=m;k++)
            {
                for(i=1;i<=m;i++)
                {
                    for(j=1;j<=m;j++)
                    {
                        if(dic[i][j]>dic[i][k]+dic[k][j])
                        {
                            dic[i][j]=dic[i][k]+dic[k][j];
                            pic[i][j]=pic[i][k];
                        }
                    }
                }
            }
            for(i=1;i<=m;i++)
            {
                for(j=1;j<=m;j++)
                {
                    if(i!=j)
                    printf("%d->%d:%d ",i,j,dic[i][j]);
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    vueJs+webpack单页面应用--vue-router配置
    webstorm IDE添加Plugins----添加vue插件
    WebStorm 11、PhpStorm 10免费激活(不需要注册码)
    webpack react基础配置二 热加载
    webpack react基础配置一
    移动端页面去掉click点击 背景色变化
    css美化checkbox radio样式
    ie11媒体查询以及其他hack
    angularJS ng-grid 配置
    网络7. TCP/IP网络之网络接口层
  • 原文地址:https://www.cnblogs.com/yewa/p/7243568.html
Copyright © 2011-2022 走看看