zoukankan      html  css  js  c++  java
  • FLOYD

    View Code
      1 #include<stdio.h>
      2 #define MAXV 100
      3 #define INF 32767
      4 //#include"graph.h"
      5 
      6 void DispMat(MGraph g)
      7 {
      8     int i,j;
      9     for(i=0;i<g.n;i++)
     10     {
     11         for(j=0;j<g.n;j++)
     12         if(g.edges[i][j]==INF)
     13         printf("%3s","");
     14         else
     15         printf("%3d",g.edges[i][j]);
     16         printf("\n");
     17     }
     18 }
     19 void ppath(int path[][MAXV],int i,int j)
     20 {
     21     int k;
     22     k=path[i][j];
     23     if(k==-1) return;
     24     ppath(path,i,k);
     25     printf("%d,",k);ppath(path,k,j);
     26 }
     27 void DisPath(int A[][MAXV],int path[][MAXV],int n)
     28 {
     29     int i,j;
     30     for(i=0;i<n;i++)
     31     for(j=0;j<n;j++)
     32     if(A[i][j]==INF)
     33     {
     34         if(i!=j)
     35         printf("从%d到%d没有路径");
     36     }
     37     else
     38     {
     39         if(i<j)
     40         {
     41             printf("从%d到%d的路径为:",i,j);
     42             printf("%d,",i);
     43             ppath(path,i,j);
     44             printf("%d",j);
     45             printf("\t路径长度为:%d\n",A[i][j]);
     46         }
     47     }
     48 }
     49 void Floyd(MGraph g)
     50 {
     51     int A[MAXV][MAXV];
     52     int path[MAXV][MAXV];
     53     int i,j,k,n=g.n;
     54     for(i=0;i<n;i++)
     55     for(j=0;j<n;j++)
     56     {
     57         A[i][j]=g.edges[i][j];
     58         path[i][j]=-1;
     59     }
     60     for(k=0;k<n;k++)
     61     {
     62         for(i=0;i<n;i++)
     63         for(j=0;j<n;j++)
     64         if(A[i][j]>(A[i][k]+A[k][j]))
     65         {
     66             A[i][j]=A[i][k]+A[k][j];
     67             path[i][j]=k;
     68         }
     69     }
     70     printf("\n输出最短路径:\n");
     71     DisPath(A,path,n);
     72 }
     73 void main()
     74 {
     75     int i,j,u=0;
     76     MGraph g;
     77     double A[51][51];
     78     for(i=0;i<51;i++)
     79     {
     80         for(j=0;j<51;j++)
     81         {
     82             A[i][j]=INF;
     83         }
     84     }
     85     A[0][18]=2182.0;
     86     A[0][21]=1796.9;
     87     A[0][26]=1392.1;
     88     A[1][3]=1916.3;
     89     A[1][6]=1294.3;
     90     A[1][7]=1968.2;
     91     A[1][8]=2.8638e+003;
     92     A[2][4]=2.2926e+003;
     93     A[2][5]=1.2529e+003;
     94     A[2][20]=7.8233e+003;
     95     A[3][4]=3.5364e+003;
     96     A[3][8]=1.9581e+003;
     97     A[5][15]=5.0045e+003;
     98     A[7][10]=2.0594e+003;
     99     A[7][18]=5.9179e+003;
    100     A[8][12]=1.7568e+003;
    101     A[9][10]=1.9455e+003;
    102     A[9][14]=2.6813e+003;
    103     A[10][18]=5.9095e+003;
    104     A[11][12]=1.4177e+003;
    105     A[11][13]=1.6696e+003;
    106     A[12][13]=1.4568e+003;
    107     A[12][15]=4.8058e+003;
    108     A[12][25]=5.7566e+003;
    109     A[13][18]=3.1135e+003;
    110     A[13][19]=3.4557e+003;
    111     A[14][16]=2.6077e+003;
    112     A[14][17]=2.1957e+003;
    113     A[14][18]=5.3422e+003;
    114     A[14][21]=3.2967e+003;
    115     A[15][22]=2.8610e+003;
    116     A[15][25]=4.2354e+003;
    117     A[16][23]=2.0976e+003;
    118     A[17][21]=1.8239e+003;
    119     A[17][23]=1.7745e+003;
    120     A[18][31]=2.1037e+003;
    121     A[19][24]=2.2586e+003;
    122     A[19][25]=1.9662e+003;
    123     A[20][22]=1.4989e+003;
    124     A[21][26]=2.1917e+003;
    125     A[21][36]=2.8802e+003;
    126     A[22][29]=1.0979e+003;
    127     A[22][30]=1.2875e+003;
    128     A[23][32]=1.3119e+003;
    129     A[24][31]=1.7801e+003;
    130     A[25][29]=1.8859e+003;
    131     A[25][41]=4.1546e+003;
    132     A[26][31]=1.5370e+003;
    133     A[27][31]=1.0678e+003;
    134     A[27][36]=2.2039e+003;
    135     A[27][39]=1.7799e+003;
    136     A[28][30]=1.0179e+003;
    137     A[28][33]=1.3257e+003;
    138     A[30][41]=4.9976e+003;
    139     A[31][34]=2.3247e+003;
    140     A[32][35]=1.1140e+003;
    141     A[33][46]=3.7585e+003;
    142     A[34][40]=1.6308e+003;
    143     A[35][38]=1.4097e+003;
    144     A[36][38]=1.5374e+003;
    145     A[36][45]=3.1825e+003;
    146     A[37][40]=2.0901e+003;
    147     A[37][41]=2.6019e+003;
    148     A[38][43]=2.6184e+003;
    149     A[40][45]=3.2170e+003;
    150     A[40][47]=2.3312e+003;
    151     A[40][50]=3.0435e+003;
    152     A[41][44]=2.3660e+003;
    153     A[41][46]=2.7354e+003;
    154     A[42][43]=917.6737;
    155     A[42][45]=2.3517e+003;
    156     A[42][49]=1.9714e+003;
    157     A[44][48]=2.1525e+003;
    158     A[44][50]=4.9870e+003;
    159     A[45][50]=3.1028e+003;
    160     A[46][48]=1.4941e+003;
    161     A[49][50]=3.5688e+003;
    162     for(i=0;i<51;i++)
    163     {
    164         for(j=0;j<51;j++)
    165         {
    166             if(A[i][j]!=0)
    167             A[j][i]=A[i][j];
    168         }
    169     }
    170     g.n=51;
    171     g.e=154;
    172     for(i=0;i<g.n;i++)
    173     for(j=0;j<g.n;j++)
    174     g.edges[i][j]=A[i][j];
    175     printf("\n");
    176     printf("图G的邻接矩阵:\n");
    177     DispMat(g);
    178     Floyd(g);
    179     printf("\n");
    180 }
  • 相关阅读:
    如何进入docker 使用root用户的方式
    阿里云服务搭建nginx并配置
    阿里云容器部署Redis集群
    Redis运维利器 -- RedisManager
    远程连接-使用SSH密钥对远程登录阿里云云服务器
    第1课:SQL注入原理深度解析
    数据库设计三大范式
    linux指令大全(归类整理)
    linux目录结构
    linux-创建/使用快照/克隆(类似windows中备份还原)
  • 原文地址:https://www.cnblogs.com/0803yijia/p/2626834.html
Copyright © 2011-2022 走看看