Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. #include <iostream>
  2. #include<iostream>
  3. #include<windows.h>
  4. #include<conio.h>
  5. #include<stdio.h>
  6. #include<locale.h>
  7. #include<math.h>
  8. using namespace std;
  9.  
  10. const int n = 5;
  11.  
  12. int a[n][n] = { {0,0,5,0,20},{0,0,0,10,12},{5,0,0,0,0},{0,10,0,0,0},{20,12,0,0,0} };
  13. int b[n][n];
  14. //void way(int i0, int j0);
  15. int otk, kud;
  16.  
  17. void way(int i0, int j0){
  18. printf("%i -> ", i0);
  19. while (a[i0-1][j0-1] != b[i0-1][j0-1]) {
  20. for (int i = 0; i < n; ++i){
  21. for (int j = 0; j < n; j++){
  22. if ((i != i0-1) && (j != j0-1) && (a[i0-1][i] != 0) && (b[i][j0-1] != 0) && (b[i0-1][j0-1] == (a[i0-1][i] + b[i][j0-1]))) {
  23. printf("%i(%i) -> ", i+1, a[i0-1][i]);
  24. i0 = i+1;
  25. break;
  26. }
  27. }
  28. }
  29. }
  30. printf("%i(%i)", j0, a[i0-1][j0-1]);
  31. }
  32.  
  33. int main(){
  34.  
  35. setlocale(LC_ALL, "Russian");
  36.  
  37. int n = 5;
  38.  
  39. cout << "Матрица а" << endl;
  40. for (int i = 0; i < n; i++){
  41. for (int j = 0; j < n; j++) printf("%3.1d ", a[i][j]);
  42. cout << endl;
  43. }
  44. cout << endl;
  45.  
  46. cout << "Матрица b (копия матрицы a)" << endl;
  47. for (int i = 0; i < n; i++){
  48. for (int j = 0; j < n; j++) {
  49. b[i][j] = a[i][j];
  50. printf("%3.1d ", b[i][j]);
  51. }
  52. cout << endl;
  53. }
  54. cout << endl;
  55.  
  56.  
  57. while (1){
  58. int is = 0;
  59.  
  60. for (int i = 0; i < n; ++i){
  61. for (int j = 0; j < n; j++){
  62. if (i != j && b[i][j] != 0){
  63. for (int k = 0; k < n; ++k){
  64.  
  65. if (k != i && k != j && b[j][k]){
  66. if (b[i][k] == 0 || b[i][k] > b[i][j] + b[j][k]){
  67. b[i][k] = b[i][j] + b[j][k];
  68. is = 1;
  69. }
  70. }
  71. }
  72. }
  73. }
  74. }
  75. if (is == 0) break;
  76. }
  77.  
  78. cout << endl;
  79.  
  80. cout << "Измененная матрица b" << endl;
  81. for (int i = 0; i < n; i++){
  82. for (int j = 0; j < n; j++){
  83. printf("%3.1d ", b[i][j]);
  84. }
  85. cout << endl;
  86. }
  87. cout << endl;
  88.  
  89. cout << "Откуда -> куда" << endl;
  90. int otk; int kud;
  91. cin >> otk >> kud;
  92. way(otk, kud);
  93.  
  94. _getch();
  95. return 0;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement