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

    ´Floyd算法则是需要求出任意两点之间的最短路。(保证有最短路,没有负环)
    ´我们通过dis[i][j]表示从i到j的最短路径。
    ´然后最开始我们设dis[i][i]=0,dis[i][j]=+oo。
    ´然后接下来我们尝试从逐个逐个中间点的添加,以扩展路径长度
    ´理论上该算法也可以采用多次dijkstra算法或者多次Bellman-Ford算法来解决,但直接采用Floyd算法将可以大大减小编程复杂度
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int maxn=100;
     5 const int oo=10000000;
     6 int n,m;
     7 int dis[maxn][maxn];
     8 int main()
     9 {
    10     scanf("%d%d",&n,&m);
    11     for (int i=1;i<=n;i++) 
    12      for (int j=1;j<=n;j++)
    13       if (i!=j)
    14        dis[i][j]=oo;
    15     for (int i=1;i<=m;i++)
    16     {
    17         int x,y,z;
    18         scanf("%d%d%d",&x,&y,&z);
    19         dis[x][y]=min(dis[x][y],z);
    20     }
    21     for (int k=1;k<=n;k++)
    22      for (int i=1;i<=n;i++)
    23       for (int j=1;j<=n;j++)
    24        if (dis[i][k]!=oo && dis[k][j]!=oo)
    25         dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
    26     for (int i=1;i<=n;i++)
    27     {
    28         for (int j=1;j<=n;j++) printf("%d ",dis[i][j]);
    29         printf("
    ");
    30     }
    31     return 0;
    32  } 
  • 相关阅读:
    easyui-filebox上传图片到阿里
    easyUI-filebox图片上传和预览
    抓网页__第3方库选择_01
    HttpClient示例01
    JSON01_资料
    指定library路径
    Jni_Linux_01_转
    JNI简单步骤01
    JDK_环境变量
    Redis_01
  • 原文地址:https://www.cnblogs.com/9pounds15pence/p/6349696.html
Copyright © 2011-2022 走看看