FloydTest.c
上传用户:hbxtsdjs
上传日期:2022-04-11
资源大小:1594k
文件大小:1k
源码类别:

电子书籍

开发平台:

C/C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. typedef char DataType;
  5. #define MaxSize 100
  6. #define MaxVertices 10
  7. #define MaxWeight 9999
  8. #define N 3
  9. #include "AdjMGraph.h"
  10. #include "AdjMGraphCreate.h"
  11. void Floyd(int cost[][N], int n, int weight[][N], int path[][N])
  12. {
  13. int i, j, k;
  14. for(i = 0; i < n; i++)
  15. for(j = 0; j < n; j++)
  16. {
  17. weight[i][j] = cost[i][j];
  18. path[i][j] = -1;
  19. }
  20. for(k = 0; k < n; k++)
  21. {
  22. for(i = 0; i < n; i++)
  23. for(j = 0; j < n; j++)
  24. if(weight[i][j] > weight[i][k] + weight[k][j])
  25. {
  26. weight[i][j] = weight[i][k] + weight[k][j];
  27. path[i][j] = k;
  28. }
  29. }
  30. }
  31. void main(void)
  32. {
  33. int cost[N][N] = {{0,12,5},{4,0,MaxWeight},{MaxWeight,6,0}};
  34. int weight[N][N], path[N][N], n = 3;
  35. int i, j;
  36. Floyd(cost, n, weight, path);
  37. for(i = 0; i < n; i++)
  38. {
  39. for(j = 0; j < n; j++)
  40. printf("%d   ", weight[i][j]);
  41. printf("n");
  42. }
  43. for(i = 0; i < n; i++)
  44. {
  45. for(j = 0; j < n; j++)
  46. printf("%d   ", path[i][j]);
  47. printf("n");
  48. }
  49. }