zoukankan      html  css  js  c++  java
  • Floyed算法c语言实现

    (一)Floyed算法是解决赋权图最短路问题的.
    (二)算法的基本思想:
        利用图论中的传递关系,更新任意两点间的最短距离。
    (三)时间复杂度高。
    (四)算法的核心代码
    1 for(k=1;k<=n;k++)
    2         for(i=1;i<=n;i++)
    3             for(j=1;j<=n;j++) {
    4                 if(d[i][k]+d[k][j]<d[i][j]) {
    5                     d[i][j]=d[i][k]+d[k][j];
    6                     path[i][j]=path[i][k];
    7                 }
    8             }

    (五)C++完整代码

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define max 1000000000
     4 
     5 int d[1000][1000],path[1000][1000];
     6 int main()
     7 {
     8     int i,j,k,m,n;
     9     int x,y,z;
    10     scanf("%d%d",&n,&m);
    11 
    12     for(i=1;i<=n;i++)
    13         for(j=1;j<=n;j++){
    14             d[i][j]=max;
    15             path[i][j]=j;
    16     }
    17 
    18     for(i=1;i<=m;i++) {
    19             scanf("%d%d%d",&x,&y,&z);
    20             d[x][y]=z;
    21             d[y][x]=z;
    22     }
    23 
    24     for(k=1;k<=n;k++)
    25         for(i=1;i<=n;i++)
    26             for(j=1;j<=n;j++) {
    27                 if(d[i][k]+d[k][j]<d[i][j]) {
    28                     d[i][j]=d[i][k]+d[k][j];
    29                     path[i][j]=path[i][k];
    30                 }
    31             }
    32     int f, en;
    33     scanf("%d%d",&f,&en);
    34     int ans = 0,p;
    35     while (f!=en) {
    36         printf("%d->",f);
    37         p = path[f][en];
    38         ans += d[f][p];
    39         f=path[f][en];
    40     }
    41     printf("%d
    %d",en,ans);
    42     return 0;
    43 }
  • 相关阅读:
    1.3、python内置类型(0529)
    1.2、Python快速入门(0529)
    1.1、Python快速入门(0529)
    mini Linux制作过程(25/01)
    samba基本应用24-4及示例
    Apache+Php+Mariadb+NFS+discuz
    U盘中病毒了怎么办
    bind9安装配置
    负载均衡的实现(1)
    MySQL之优化
  • 原文地址:https://www.cnblogs.com/--lr/p/6716309.html
Copyright © 2011-2022 走看看