Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. void printArray(int **array, int n)
  7. {
  8.     for (int i = 0; i < n; i++)
  9.     {
  10.         for (int k = 0; k < n; k++)
  11.         {
  12.             printf("%d ", array[i][k]);
  13.         }
  14.         printf("\n");
  15.     }
  16. }
  17.  
  18. main()
  19. {
  20.     ifstream file;
  21.     file.open("input.txt");
  22.     if (!file.is_open())
  23.     {
  24.         printf("input.txt does not exists\n");
  25.         //system("pause");
  26.         return -1;
  27.     }
  28.     int n;
  29.     file >> n;
  30.     int **array = new int *[n];
  31.     int **copyArray = new int *[n];
  32.     printf("Reading input.txt\n");
  33.     for (int i = 0; i < n; i++)
  34.     {
  35.         array[i] = new int[n];
  36.         copyArray[i] = new int[n];
  37.         for (int k = 0; k < n; k++)
  38.         {
  39.             if (i != k)
  40.             {
  41.                 file >> array[i][k];
  42.             }
  43.             else
  44.             {
  45.                 array[i][k] = -1;
  46.             }
  47.             copyArray[i][k] = array[i][k];
  48.         }
  49.     }
  50.     file.close();
  51.     printf("Done.\n");
  52.     bool flag;
  53.     do
  54.     {
  55.         flag = 0;
  56.         for (int row = 0; row < n; row++)
  57.         {
  58.             for (int col = 0; col < n; col++)
  59.                 if (array[row][col] > 0)
  60.                 {
  61.                     for (int k = 0; k < n; k++)
  62.                     {
  63.                         if (array[col][k] > 0 && (array[row][k] == 0 || array[row][col] + array[col][k] < array[row][k]))
  64.                         {
  65.                             array[row][k] = array[row][col] + array[col][k];
  66.                         }
  67.                     }
  68.                 }
  69.         }
  70.     } while (flag);
  71.     printf("original:\n");printArray(array, n);printf("copy:\n");printArray(copyArray, n);return 0;
  72.  
  73.     //наверно ещё что-то есть
  74.     int i0 = 1, j0 = 1;
  75.     printf("%d->%d(%d):\n", i0, j0, array[i0][j0]);
  76.     printf("\t%d->", i0);
  77.  
  78.     while (array[i0][j0] != copyArray[i0][j0] && array[i0][j0])
  79.     {
  80.         for (int k = 0; k < n; k++)
  81.         {
  82.             if (k != i0 && k != j0 && copyArray[i0][k] && array[i0][j0] == copyArray[i0][k] + array[k][j0])
  83.             {
  84.                 printf("%d(%d)->", k, copyArray[i0][k]);
  85.                 i0 = k;
  86.                 break;
  87.             }
  88.         }
  89.     }
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement