AlexandruDu

Arbori

Mar 15th, 2021 (edited)
539
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. type struct {int x,y;
  2.         float c;
  3.        }muchie;
  4. muchie U[50]
  5. int L[50],n,m,i,j,v,w;
  6. float ct;
  7. void citire(int &n, int &m, muchie u[50]
  8. {
  9.      cout<<"numaru de varfuri";cin>>n;
  10.      cout<<"numaru de muchii";cin>>m;
  11.      for(int i=1;i<=m;i++)
  12.      {
  13.          cout<<"muchia "<<i<<": "<<endl;
  14.          cout<<"x=";cin>>u[i].x;
  15.          cout<<"y=";cin>>u[i].y;
  16.          cout<<"costult";cin>>u[i].c;
  17.      }
  18. }
  19.  
  20. void ordonare(int m, muchie u[50])
  21. {
  22.     int p=0,ok,i;
  23.     do{ p++;
  24.         ok=1;
  25.         for(i=1;i<m-p:i++)
  26.             if(u[i].c > u[i+1].c)
  27.               {
  28.                 swap(u[i],u[i+1]);
  29.                 ok=0;
  30.               }
  31. } while(ok==1);
  32. }
  33. void kruskal() {
  34.     for (int i = 1; i <= n; i++) {
  35.         subArbOf[i] = i;
  36.     }
  37.     for (int i = 1; i <= m; i++) {
  38.         if (subArbOf[u[i].x] != subArbOf[u[i].y]) {
  39.             sum += u[i].cost;
  40.  
  41.             int subArbOfX = subArbOf[u[i].x],
  42.                 subArbOfY = subArbOf[u[i].y];
  43.             for (int j = 1; j <= n; j++) {
  44.                 if (subArbOf[j] == subArbOfY) {
  45.                     subArbOf[j] = subArbOfX;
  46.                 }
  47.             }
  48.         }
  49.     }
  50. }
  51. int main() {
  52.     citire();
  53.     ordonare();
  54.     kruskal();
  55.     cout << sum << endl;
  56.     return 0;
  57. }
Add Comment
Please, Sign In to add comment