Advertisement
Guest User

Prim

a guest
Jun 18th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. // Prim.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9. int A[10][10];
  10.  
  11. void Prim(int n)
  12. {
  13.    
  14.     int u, v, k, v1, u1;
  15.  
  16.     int vertex[20];
  17.     int T[2][10];
  18.  
  19.     for (int i = 0; i <= 11; i++) {
  20.         vertex[i] = 0;
  21.     }
  22.  
  23.     vertex[1] = 1;
  24.     k = 1;
  25.  
  26.     for (int i = 1; i <= n; i++)
  27.     {
  28.         int min = 100;
  29.         for (u = 1; u <= n; u++) {
  30.             for (v = u + 1; v <= n; v++)
  31.             {
  32.                 if ((A[u][v] < min) && (vertex[u] == 1) && (vertex[v] == 0))
  33.                 {
  34.                     min = A[u][v];
  35.                     v1 = v;
  36.                     u1 = u;
  37.                    
  38.                 }
  39.                 cout << v1 << " " << u1 << " " << endl;
  40.             }
  41.         }
  42.  
  43.         T[0][i] = u1;
  44.         T[1][i] = v1;
  45.  
  46.         vertex[v1] = 1;
  47.  
  48.     }
  49.  
  50.    
  51.     for (int i = 0; i <= 1; i++) {
  52.         for (int j = 1; j < n; j++) {
  53.             cout << T[i][j] << " ";
  54.         }
  55.         cout << endl;
  56.     }
  57.    
  58.  
  59. }
  60.  
  61. int main()
  62. {
  63.     setlocale(0, "");
  64.     int n, m, x, y, c;
  65.     cout << "кол-во вершин, кол-во ребер " << endl;
  66.     cin >> n >> m;
  67.     for (int i = 1; i <= n; i++)
  68.         for (int j = 1; j <= n; j++)
  69.             A[i][j] = 100;
  70.     for (int i = 1; i <= m; i++) {
  71.         cout << "откуда куда вес" << endl;
  72.         cin >> x >> y >> c;
  73.         A[x][y] = c;
  74.         A[y][x] = c;
  75.     }
  76.  
  77.     for (int i = 1; i <= n; i++) {
  78.         for (int j = 1; j <= n; j++)
  79.             cout << A[i][j] << " ";
  80.         cout << endl;
  81.     }
  82.     Prim(n);
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement