cze 04 2016

kruskala


Komentarze: 1

#include<algorithm>

#include<iostream>

using namespace std;

6int tab[100], ile[100];

8int Find(int a)

9{

10return (tab[a]==a) ? : (tab[a] = Find(tab[a]));

11}

12

13bool Union(int aint b)

14{

15int fa Find(a); 

16int fb Find(b);18

 

 if (fa==fbreturn false;

19if (ile[fa] <= ile[fb])

20{

21ile[fb] += ile[fa];

22tab[fa] = fb;

23}

24else

25{

26ile[fa] += ile[fb];

27tab[fb] = fa;

28}

29return true;

30}

31

32 pairint,pair<int,int> > krawedzie[300000]; 

34int main()

35{

36int nma,b,c,koszt=0;

38cout<<"Podaj liczbe wierzcholkow i krawedzi"<<endl;

39

cin>>n>>m;

40

 

41for (int i=0i<ni++)

42{

43tab[i] = i

44ile[i] = 1

45}

46for (int i=0i<mi++)

47{

48cout<<"Podaj wierzcholki krawedzi i jej wage"<<endl;

49cin>>a>>b>>c;

50krawedzie[i] = make_paircmake_pair(a,b) );

51}

52

53sort(krawedziekrawedzie+m);

54cout<<endl;

55

56for (int i=0i<mi++)

57if(Union(krawedzie[i].second.first,krawedzie[i].second.second))

58{

59

cout<<krawedzie[i].second.first<<" - "<<krawedzie[i].second.second<<" : "

<<krawedzie[i].first<<endl;

60

koszt += krawedzie[i].first//koszt (c)

61}

62cout<<koszt;

63return 0;

64 }

malukry122 : :
gosc
04 czerwca 2016, 14:33
zajebisty blog ! :)

Dodaj komentarz