zoukankan      html  css  js  c++  java
  • 图论 最短路 floyd

    任意两点间最短距离

    每两点间遍历所有节点,更新最短距离

    复杂度O(n^3)

    板子

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<queue>
    #include<set>
    #include<string>
    using namespace std;
    const int INF=0x3f3f3f3f;
    typedef pair<int, int> pr;
    typedef long long ll;
    #define fi first
    #define se second
    #define me(x) memset(x, -1, sizeof(x))
    #define mem(x) memset(x, 0, sizeof(x))
    #define N 20000+5
    #define NIL -1
    int a[N][N];
    int n, m;
    void floyd()
    {
        int i, j, k;
        for(k=1; k<=n; k++)
            for(i=1; i<=n; i++)
            {
                if(a[i][k]==INF) continue;
                for(j=1; j<=n; j++)
                {
                    if(a[k][j]==INF) continue;
                    a[i][j]=min(a[i][j], a[i][k]+a[k][j]);
                }
            }
    }
    int main()
    {
        int i, j, k;
        int u, v, w;
        while(cin>>n>>m)
        {
            for(i=1; i<=n; i++)
                for(j=1; j<=n; j++)
                i==j ? a[i][j]=0 : a[i][j]=INF;
            for(i=0; i<m; i++)
                cin>>u>>v>>w, a[u][v]=w;//双向 ,a[v][u]=w;
            floyd();
            for(i=1; i<=n; i++)
                if(a[i][i]<0) break;
            if(i<=n) cout<<"negetive circle"<<endl;
            else
            {
                for(i=1; i<=n; i++)
                {
                    for(j=1; j<=n; j++)
                    {
                        if(j>1) cout<<' ';
                        if(a[i][j]!=INF) cout<<a[i][j];
                        else cout<<"INF";
                    }
                    cout<<endl;
                }
            }
        }
    }
  • 相关阅读:
    FFmpeg RTSP流通过UDP传输问题
    Hibernate
    定时刷新和跳转和停止
    md5
    xxx.class类型类
    android开发-java
    爬虫scrapy
    lettuce之springboot整合redis
    Netty
    java线程池
  • 原文地址:https://www.cnblogs.com/op-z/p/11282343.html
Copyright © 2011-2022 走看看