Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <iostream>
- #include <fstream>
- #include <cstdlib>
- using namespace std;
- string nazwaPliku;
- string c,b,a;
- int i;
- const int MaxIloscWezlow = 100;
- const int MaxIloscKrawedzi = 1000;
- struct KrawedzGrafu{
- int odwezla;
- int dowezla;
- int koszt;
- };
- void SortujKrawedzie( KrawedzGrafu **G1, int gk)
- {
- KrawedzGrafu tmp;
- for (i=1; i<= gk-1; i++)
- for (int j=1; j<= gk-i; j++)
- if ( (*G1)[j].koszt > (*G1)[j+1].koszt )
- {
- tmp = (*G1)[j];
- (*G1)[j] = (*G1)[j+1];
- (*G1)[j+1] = tmp;
- }
- }
- int AlgKruskala( int n, KrawedzGrafu **G1, KrawedzGrafu **T1 )
- {
- int *Z = (int*)malloc( sizeof( int) * (n+3) );
- int j, k, u, v, w;
- int tk =0;
- cout<<"Deryllll"<<i<<endl;
- for (i=1; i<=n; i++) Z[i] = 0;
- k =1;
- j =1;
- while (k<n)
- {
- cout<<"Beny"<<i<<endl;
- u = (*G1)[j].odwezla;
- v = (*G1)[j].dowezla;
- j =j+1;
- cout<<"Dzem"<<i<<endl;
- if ( Z[u]==0 || Z[v]==0 || Z[u]!=Z[v] )
- {
- cout<<"BLASK"<<i<<endl;
- tk =tk +1;
- (*T1)[ tk ] = (*G1)[j-1];
- if ( Z[u]==0 && Z[v]!=0 )
- {
- w =u;
- u =v;
- v =w;
- cout<<"Piernik"<<i<<endl;
- }
- if ( Z[u]==0 ) Z[u] =u;
- if ( Z[v]==0 ) Z[v] =Z[u];
- else
- {
- w =Z[v];
- for (i=1; i<=n; i++)
- if ( Z[i]==w ) Z[i] =Z[u];
- }
- k =k+1;
- cout<<"Dzem"<<i<<endl;
- }
- }
- delete Z;
- return tk;
- }
- int main(int argc, char* argv[])
- {
- fstream Dane;
- //cout<<"Nazwa pliku"<<endl;
- cin>>nazwaPliku;
- int n, gk, tk;
- n=7;
- gk=5;
- KrawedzGrafu *G = (KrawedzGrafu *)malloc( (gk+3)* sizeof( KrawedzGrafu ) );
- KrawedzGrafu *T = (KrawedzGrafu *)malloc( (gk+3)* sizeof( KrawedzGrafu ) );
- i=1;
- Dane.open( "Dane.txt"/*nazwaPliku.c_str()*/ );
- if( !Dane.good() )
- return false;
- while( true ) {
- Dane >> a >> b >> c;
- if( !Dane.good() )
- {
- Dane.close();
- break;
- }
- else
- {
- G[i].odwezla=atoi(a.c_str());
- G[i].dowezla=atoi(b.c_str());
- G[i].koszt=atoi(c.c_str());
- i++;
- }
- }
- SortujKrawedzie( &G, gk);
- tk = AlgKruskala(n, &G, &T );
- for (i=1; i<= tk; i++)
- cout<< T[i].odwezla<< " -> "<<T[i].dowezla << " : "<< T[i].koszt ;
- delete G;
- delete T;
- cout<<"koniec";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment