Advertisement
wendy890711

191227-complete

Dec 27th, 2019
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. #include <iomanip>
  4. #define size 7
  5. #define infin 9999
  6. int GraphMatrix[size][size];
  7. int distan[size];
  8. bool visit[7]={0};
  9.  
  10. void BuildMatrix(int*PathCost)
  11. {
  12. int StartPoint;
  13. int EndPoint;
  14. for (int i = 0; i < size; i++)
  15. {
  16. for (int j = 0; j < size; j++)
  17. {
  18. if (i == j)
  19. GraphMatrix[i][j] = 0;
  20. else
  21. GraphMatrix[i][j] = infin;
  22. }
  23. }
  24.  
  25. for (int i = 0; i < 12;i++)
  26. {
  27. StartPoint = PathCost[i * 3]-1;
  28. EndPoint = PathCost[i * 3 + 1]-1;
  29. GraphMatrix[StartPoint][EndPoint] = PathCost[i * 3 + 2];
  30. GraphMatrix[EndPoint][StartPoint] = PathCost[i * 3 + 2];
  31. }
  32. }
  33.  
  34. void PrintGraph()
  35. {
  36. int i, j;
  37. for (i = 0; i < size; i++)
  38. {
  39. cout << "vex" << i+1;
  40. for (j = 0; j < size; j++)
  41. {
  42. {
  43. if (GraphMatrix[i][j] == infin)
  44. cout <<setw(5)<< 'x';
  45. else
  46. {
  47. GraphMatrix[j][i] = GraphMatrix[i][j];
  48. cout << setw(5) << GraphMatrix[i][j];
  49. }
  50. }
  51. }
  52. cout << endl;
  53. }
  54. }
  55.  
  56. int main()
  57. {
  58. int A=0;
  59. int PathCost[12][3] = {
  60. { 1, 2, 4 },
  61. { 1, 3, 6 },
  62. { 1, 4, 6 },
  63. { 2, 3, 1 },
  64. { 2, 5, 7 },
  65. { 3, 4, 2 },
  66. { 3, 5, 6 },
  67. { 3, 6, 4 },
  68. { 4, 6, 5 },
  69. { 5, 6, 1 },
  70. { 5, 7, 6 },
  71. { 6, 7, 8 },
  72. };
  73. BuildMatrix(&PathCost[0][0]);
  74. cout << "相鄰矩陣如下" << endl;
  75. cout << "頂點 vex1 vex2 vex3 vex4 vex5 vex6 vex7" << endl;
  76. PrintGraph();
  77.  
  78.  
  79. for (int i = 0; i < size; i++)
  80. {
  81. distan[i] = GraphMatrix[0][i];
  82. cout << distan[i] << " ";
  83. }
  84. cout << endl;
  85. visit[0] = true;
  86.  
  87. for(int i=0;i<size;i++)
  88. {
  89. int min=infin;
  90. for( int j=0;j<size;j++)
  91. {
  92. if(distan[j]<min && distan[j]!=0 && visit[j]==0)
  93. {
  94. min = distan[j];
  95. A=j;
  96. }
  97. }
  98.  
  99. cout<<"新增頂點"<<A+1<<endl;
  100.  
  101. for(int j=0;j<size;j++)
  102. {
  103. if((GraphMatrix[A][j]+min)<distan[j])
  104. distan[j]=(GraphMatrix[A][j]+min);
  105.  
  106. cout<<distan[j]<<" ";
  107. }
  108. cout<<endl;
  109. visit[A]=true;
  110. }
  111.  
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement