码迷,mamicode.com
首页 > 编程语言 > 详细

最短路径——Floyd算法

时间:2015-11-25 23:17:20      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

如何求一张图中任意两顶点之间的最短路径长度,这里写一种最简单的算法——Floyd算法:

 1 #include<stdio.h>
 2 
 3 #define inf 9999
 4 
 5 int main()
 6 {
 7     int e[10][10];        //用邻接矩阵表示图
 8     printf("请输入顶点和边的数目:");
 9     int n,m;
10     scanf("%d%d",&n,&m);
11     for(int i=0;i<n;i++)
12     {
13         for(int j=0;j<n;j++)
14         {
15             if(i==j)
16             {
17                 e[i][j]=0;
18             }
19             else
20             {
21                 e[i][j]=inf;
22             }
23         }
24     }
25 
26     int a,b,c;
27     for(int i=0;i<m;i++)
28     {
29         printf("请输入第%d个边的两个顶点和权值:",i+1);
30         scanf("%d%d%d",&a,&b,&c);
31         e[a][b]=c;    
32     }
33 
34     //Floyd算法核心语句
35     for(int k=0;k<n;k++)
36     {
37         for(int i=0;i<n;i++)
38         {
39             for(int j=0;j<n;j++)
40             {
41                 if(e[i][j]>e[i][k]+e[k][j])
42                 {
43                     e[i][j]=e[i][k]+e[k][j];
44                 }
45             }
46         }
47     }
48 
49     for (int i = 0; i < n; ++i)
50     {
51         for (int j = 0; j < n; ++j)
52         {
53             printf("%10d",e[i][j]);
54         }
55         printf("\n");
56     }
57 
58     return 0;
59 }

运行结果为:

技术分享

最短路径——Floyd算法

标签:

原文地址:http://www.cnblogs.com/flypie/p/4996015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!