VasilM

kruskal

May 26th, 2014
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. #define MAXN 100
  5.  
  6. int leader[MAXN];
  7.  
  8. int G[MAXN][3];
  9.  
  10. int N, M;
  11.  
  12. int find(int u){
  13.  
  14.     return leader[u];
  15. }
  16.  
  17. void merge(int l1,int l2){
  18.  
  19.     for(int i=1;i<=N;i++)
  20.         if(leader[i]==l2)
  21.             leader[i]=l1;
  22. }
  23.  
  24. void bubble_sort_level2(){
  25.  
  26.     for( int i = M-2; i >= 0; i--){
  27.         for( int j = 0; j <= i; j++){
  28.  
  29.             if( G[j][2] > G[j+1][2] ){
  30.  
  31.                 int swap;
  32.  
  33.                 swap = G[j][0];
  34.                 G[j][0] = G[j+1][0];
  35.                 G[j+1][0] = swap;
  36.  
  37.                 swap = G[j][1];
  38.                 G[j][1] = G[j+1][1];
  39.                 G[j+1][1] = swap;
  40.  
  41.                 swap = G[j][2];
  42.                 G[j][2] = G[j+1][2];
  43.                 G[j+1][2] = swap;
  44.             }
  45.         }
  46.     }
  47. }
  48.  
  49. int main(){
  50.  
  51.     int l1,l2;
  52.  
  53.     cin>>N>>M;
  54.    
  55.     for(int i=1; i<=M; i++ ){
  56.  
  57.         leader[i] = i;
  58.         cin >> G[i][0] >> G[i][1] >> G[i][2];
  59.     }
  60.    
  61.     bubble_sort_level2();
  62.    
  63.     for(int i=1; i<=M; i++ ){
  64.  
  65.         l1=find(G[i][0]);
  66.         l2=find(G[i][1]);
  67.    
  68.         if(l1!=l2){
  69.             merge(l1,l2);
  70.             cout << G[i][0] << " " << G[i][1] << endl;
  71.         }
  72.     }
  73.  
  74.     return EXIT_SUCCESS;
  75. }
  76. /*
  77. Дърво с цени на ребрата Връх->Връх->Ребро.Цена (Input):
  78. 10 14
  79. 5 9 1
  80. 5 10 1
  81. 9 10 1
  82. 2 5 2
  83. 3 5 2
  84. 1 2 3
  85. 4 9 3
  86. 7 10 3
  87. 6 10 4
  88. 1 6 5
  89. 3 7 5
  90. 1 3 8
  91. 2 4 10
  92. 4 8 11
  93.  
  94. Минимално Покриващо Дърво (Expected Output)
  95. 5 9
  96. 5 10
  97. 2 5
  98. 3 5
  99. 1 2
  100. 4 9
  101. 7 10
  102. 6 10
  103. 4 8
  104. */
Advertisement
Add Comment
Please, Sign In to add comment