Advertisement
darkstar97

pcv

Nov 5th, 2019
511
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define v 5
  4.  
  5. int PCV(int g[][v], int in)
  6. {
  7.     vector<int> vertices;
  8.     for (int i = 0; i < v; i++)
  9.         if (i != in)
  10.             vertices.push_back(i);
  11.  
  12.     int menorCaminho = INT_MAX;
  13.     do {
  14.         int caminhoAtual = 0;
  15.  
  16.         int k = in;
  17.         for (int i = 0; i < vertices.size(); i++) {
  18.             caminhoAtual += g[k][vertices[i]];
  19.             //printf("%d ", g[k][vertices[i]]);
  20.             k = vertices[i];
  21.         }
  22.         //printf("\n\n");
  23.         caminhoAtual += g[k][in];
  24.  
  25.         menorCaminho = min(menorCaminho, caminhoAtual);
  26.  
  27.     } while (next_permutation(vertices.begin(), vertices.end()));
  28.  
  29.     return menorCaminho;
  30. }
  31.  
  32. int main()
  33. {
  34.     int grafo[][v] = {
  35.                         {  0, 12, 10, 15,  5},
  36.                         { 12,  0,  4, 20,  9},
  37.                         { 10,  4,  0, 11, 30},
  38.                         { 15, 20, 11,  0,  3},
  39.                         {  5,  9,  30,  3,  0}
  40.                      };
  41.  
  42.  
  43.     int inicio = 0;
  44.     cout << PCV(grafo, inicio) << endl;
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement