Advertisement
bero_0401

Prüfer code

Jul 13th, 2024
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.56 KB | Source Code | 0 0
  1. // C++ program to construct tree from given Prufer Code
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. // Prints edges of tree represented by given Prufer code
  6. void printTreeEdges(int prufer[], int m)
  7. {
  8.     int vertices = m + 2;
  9.     int vertex_set[vertices];
  10.  
  11.     // Initialize the array of vertices
  12.     for (int i = 0; i < vertices; i++)
  13.         vertex_set[i] = 0;
  14.  
  15.     // Number of occurrences of vertex in code
  16.     for (int i = 0; i < vertices - 2; i++)
  17.         vertex_set[prufer[i] - 1] += 1;
  18.  
  19.     cout << "\nThe edge set E(G) is :\n";
  20.  
  21.     // Find the smallest label not present in
  22.     // prufer[].
  23.     int j = 0;
  24.     for (int i = 0; i < vertices - 2; i++) {
  25.         for (j = 0; j < vertices; j++) {
  26.             // If j+1 is not present in prufer set
  27.             if (vertex_set[j] == 0) {
  28.                 // Remove from Prufer set and print
  29.                 // pair.
  30.                 vertex_set[j] = -1;
  31.                 cout << "(" << (j + 1) << ", "
  32.                      << prufer[i] << ") ";
  33.  
  34.                 vertex_set[prufer[i] - 1]--;
  35.  
  36.                 break;
  37.             }
  38.         }
  39.     }
  40.  
  41.     j = 0;
  42.     // For the last element
  43.     for (int i = 0; i < vertices; i++) {
  44.         if (vertex_set[i] == 0 && j == 0) {
  45.             cout << "(" << (i + 1) << ", ";
  46.             j++;
  47.         }
  48.         else if (vertex_set[i] == 0 && j == 1)
  49.             cout << (i + 1) << ")\n";
  50.     }
  51. }
  52.  
  53. // Driver code
  54. int main()
  55. {
  56.     int prufer[] = { 4, 4 , 2};
  57.     int n = sizeof(prufer) / sizeof(prufer[0]);
  58.     printTreeEdges(prufer, n);
  59.     return 0;
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement