Guest User

SDADDAD

a guest
Jan 7th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.10 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <iostream>
  5. #include <fstream>
  6. #include <cstdlib>
  7. using namespace std;
  8. string nazwaPliku;
  9. string c,b,a;
  10. int i;
  11. const int MaxIloscWezlow = 100;
  12. const int MaxIloscKrawedzi = 1000;
  13.  
  14.  
  15. struct KrawedzGrafu{
  16. int odwezla;
  17. int dowezla;
  18. int koszt;
  19. };
  20.  
  21.  
  22.  
  23. void SortujKrawedzie( KrawedzGrafu **G1, int gk)
  24. {
  25. KrawedzGrafu tmp;
  26.  
  27. for (i=1; i<= gk-1; i++)
  28. for (int j=1; j<= gk-i; j++)
  29. if ( (*G1)[j].koszt > (*G1)[j+1].koszt )
  30. {
  31. tmp = (*G1)[j];
  32. (*G1)[j] = (*G1)[j+1];
  33. (*G1)[j+1] = tmp;
  34. }
  35. }
  36.  
  37.  
  38. int AlgKruskala( int n, KrawedzGrafu **G1, KrawedzGrafu **T1 )
  39. {
  40. int *Z = (int*)malloc( sizeof( int) * (n+3) );
  41. int j, k, u, v, w;
  42. int tk =0;
  43. cout<<"Deryllll"<<i<<endl;
  44. for (i=1; i<=n; i++) Z[i] = 0;
  45.  
  46. k =1;
  47. j =1;
  48. while (k<n)
  49. {
  50. cout<<"Beny"<<i<<endl;
  51. u = (*G1)[j].odwezla;
  52. v = (*G1)[j].dowezla;
  53. j =j+1;
  54. cout<<"Dzem"<<i<<endl;
  55. if ( Z[u]==0 || Z[v]==0 || Z[u]!=Z[v] )
  56. {
  57. cout<<"BLASK"<<i<<endl;
  58. tk =tk +1;
  59. (*T1)[ tk ] = (*G1)[j-1];
  60. if ( Z[u]==0 && Z[v]!=0 )
  61. {
  62. w =u;
  63. u =v;
  64. v =w;
  65. cout<<"Piernik"<<i<<endl;
  66. }
  67. if ( Z[u]==0 ) Z[u] =u;
  68.  
  69. if ( Z[v]==0 ) Z[v] =Z[u];
  70. else
  71. {
  72. w =Z[v];
  73. for (i=1; i<=n; i++)
  74. if ( Z[i]==w ) Z[i] =Z[u];
  75. }
  76. k =k+1;
  77. cout<<"Dzem"<<i<<endl;
  78. }
  79. }
  80.  
  81. delete Z;
  82. return tk;
  83. }
  84.  
  85.  
  86. int main(int argc, char* argv[])
  87. {
  88. fstream Dane;
  89. //cout<<"Nazwa pliku"<<endl;
  90. cin>>nazwaPliku;
  91. int n, gk, tk;
  92.  
  93.  
  94. n=7;
  95. gk=5;
  96.  
  97. KrawedzGrafu *G = (KrawedzGrafu *)malloc( (gk+3)* sizeof( KrawedzGrafu ) );
  98. KrawedzGrafu *T = (KrawedzGrafu *)malloc( (gk+3)* sizeof( KrawedzGrafu ) );
  99. i=1;
  100.  
  101. Dane.open( "Dane.txt"/*nazwaPliku.c_str()*/ );
  102. if( !Dane.good() )
  103. return false;
  104.  
  105. while( true ) {
  106. Dane >> a >> b >> c;
  107.  
  108. if( !Dane.good() )
  109. {
  110.  
  111. Dane.close();
  112. break;
  113. }
  114. else
  115. {
  116.  
  117. G[i].odwezla=atoi(a.c_str());
  118. G[i].dowezla=atoi(b.c_str());
  119. G[i].koszt=atoi(c.c_str());
  120. i++;
  121.  
  122. }
  123.  
  124. }
  125.  
  126. SortujKrawedzie( &G, gk);
  127.  
  128. tk = AlgKruskala(n, &G, &T );
  129.  
  130. for (i=1; i<= tk; i++)
  131. cout<< T[i].odwezla<< " -> "<<T[i].dowezla << " : "<< T[i].koszt ;
  132.  
  133. delete G;
  134. delete T;
  135. cout<<"koniec";
  136. return 0;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment