Advertisement
Guest User

Алгоритмы, лаба 4, задание 2

a guest
Dec 4th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. void FillTheMatrix(int N, int ** &a)
  7. {
  8. cout << "Автоматическое заполнение матрицы смежности для графа" << endl;
  9. for (int i = 0; i < N; i++)
  10. {
  11. a[i][i] = 0;
  12. for (int j = i + 1; j < N; j++)
  13. {
  14. a[i][j] = rand() % 100 + 1;
  15. a[j][i] = a[i][j];
  16. }
  17. }
  18. cout << endl;
  19.  
  20. }
  21.  
  22. void GreedyAlg(int N, int ** a, bool *&visit, int &sum, int root, int count)
  23. {
  24. int min = 99999999;
  25. int minind = 0;
  26. for (int i = 0; i < N; i++)
  27. if ((a[root][i] < min) && (visit[i] == false) && (i != root))
  28. {
  29. min = a[root][i];
  30. minind = i;
  31. }
  32. sum += a[root][minind];
  33. visit[minind] = true;
  34. count++;
  35. if (count == N - 1)
  36. {
  37. sum += a[minind][0];
  38. cout << "Сумма: " << sum << endl;
  39. }
  40. else
  41. {
  42. GreedyAlg(N, a, visit, sum, minind, count);
  43. }
  44. }
  45.  
  46. void Output(int N, int ** a)
  47. {
  48. cout << endl;
  49. cout << "Вывод матицы: " << endl;
  50. for (int i = 0; i < N; i++)
  51. {
  52. for (int j = 0; j < N; j++)
  53. cout << a[i][j] << " ";
  54. cout << endl;
  55. }
  56. cout << endl;
  57. }
  58.  
  59. int main()
  60. {
  61. setlocale(LC_ALL, "RUS");
  62. int N;
  63. cout << "Введите число вершин: ";
  64. cin >> N;
  65. int **matrix = new int*[N];
  66. for (int i = 0; i < N; i++)
  67. matrix[i] = new int[N];
  68.  
  69. FillTheMatrix(N, matrix);
  70.  
  71. Output(N, matrix);
  72.  
  73. int sum = 0;
  74. bool *visit = new bool[N];
  75. for (int i = 0; i < N; i++)
  76. visit[i] = false;
  77. visit[0] = true;
  78. GreedyAlg(N, matrix, visit, sum, 0, 0);
  79. system("pause");
  80. return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement