zoukankan      html  css  js  c++  java
  • Floyed-Warshall算法(求任意两点间最短距离)

    思路:感觉有点像暴力啊,反正我是觉得很暴力,比如求d[i][j],用这个方法求的话,就直接考虑会不会经过点k(k是任意一点) ,最终求得最小值

    看代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<stdio.h>
    #include<string.h>
    #include<cmath>
    #include<math.h>
    #include<algorithm>
    #include<set>
    #include<queue>
    #include<map>
    typedef long long ll;
    using namespace std;
    const ll mod=1e9+7;
    const int maxn=1e3+10;
    const int maxk=100+10;
    const int maxx=1e4+10;
    const ll maxe=1000+10;
    #define INF 0x3f3f3f3f3f3f
    int v,e;
    ll d[maxn][maxn];//cost[u][v]代表边(u,v)的权值,不存在时初始化无穷大,同一点为0
    bool vis[maxn];
    void solve()
    {
        for(int i=0;i<v;i++)
        {
            for(int j=0;j<v;j++)
            {
                for(int k=0;k<v;k++)
                    d[j][k]=min(d[j][k],d[j][i]+d[i][k]);
            }
        }
        for(int i=0;i<v;i++)
        {
    
            for(int j=i+1;j<v;j++)
            cout<<i<<" "<<j<<" "<<d[i][j]<<" "<<endl;
        }
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin>>v>>e;
        for(int i=0;i<v;i++)
        {
            for(int j=0;j<v;j++)
                d[i][j]=INF;
            d[i][i]=0;
    
        }
        int a,b,va;
        for(int i=0;i<e;i++)
        {
            cin>>a>>b>>va;
            d[a][b]=va;
        }
        solve();
        return 0;
    }
    当初的梦想实现了吗,事到如今只好放弃吗~
  • 相关阅读:
    简单明了理解Java移位运算符
    mybatis(1):入坑篇
    货币格式化
    100 doors
    Object调用静态方法
    Rust入门篇 (1)
    BOM-字节序标记
    【Linux】设定一个能输入中文的英文环境!
    正则表达式验证 输入内容为小数位不超过2位的数值
    创建一个springMVC项目总结
  • 原文地址:https://www.cnblogs.com/caijiaming/p/9381631.html
Copyright © 2011-2022 走看看