zoukankan      html  css  js  c++  java
  • Floyd算法

    #include <iostream>
    #include <cstring>
    
    #define MAXI 105
    #define INF 0x3f3f3f
    using namespace std;
    
    int a[MAXI][MAXI];    //无向图
    int n,m;    //顶点数和边数
    int prev[MAXI][MAXI];    //路径
    int  f[MAXI][MAXI];    //最短路径
    void Floyd()
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
            {
                f[i][j]=a[i][j];
                prev[i][j]=j;
            }
    
        for(int k=1;k<=n;k++)
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    if(f[i][j]>f[i][k]+f[k][j])
                    {
                        f[i][j]=f[i][k]+f[k][j];
                        prev[i][j]=prev[i][k];
                    }
    }
    void creat()
    {
        memset(f,0,sizeof(f));
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                a[i][j]=INF;
        for(int i=1;i<=n;i++)
            a[i][i]=0;
    }
    
    int main()
    {
        int w,u,v;
        cin>>n>>m;
        creat();
        for(int i=0;i<m;i++)
        {
            cin>>u>>v>>w;
            a[u][v]=w;
            a[v][u]=w;
        }
        Floyd();
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
                cout<<f[i][j]<<" ";
            cout<<endl;
        }
    
        cout<<endl;
        for(int i=1;i<n;i++)
        {
            for(int j=1;j<n;j++)
                cout<<prev[i][j]<<" ";
            cout<<endl;
        }
        int ff,en;
        cin>>ff>>en;
        while(ff!=en)
        {
            cout<<ff<<"->";
            ff=prev[ff][en];
        }
        cout<<en<<endl;
        return 0;
    }
    /*
    7 12
    1 2 7
    1 3 9
    1 6 14
    2 3 10
    2 4 15
    3 4 11
    3 6 2
    4 5 6
    5 6 9
    7 4 7
    7 5 5
    7 6 3
    */
  • 相关阅读:
    HDU6301 SET集合的应用 贪心
    线段树与树状数组的对比应用
    树状数组
    JDBC链接MySQL数据库
    HDU4686Arc of Dream 矩阵快速幂
    HDU1757矩阵快速幂
    B1013. 数素数 (20)
    B1023. 组个最小数 (20)
    [教材]B1020. 月饼 (25)
    [教材]A1025. PAT Ranking (25)
  • 原文地址:https://www.cnblogs.com/asuml/p/6641265.html
Copyright © 2011-2022 走看看