Advertisement
KrimsN

algorithm PRIMA

May 25th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include<conio.h>
  2. #include<iostream.h>
  3.  
  4. int a,b,u,v,n,i,j,ne=1;
  5. int visited[10]={0},min,mincost=0,cost[10][10];
  6.  
  7. void main()
  8. {
  9.     int path[100]={0}; //В этот массив будут записываться вершины, по которым составиться путь
  10.     int path_index=0;
  11.  
  12.     clrscr();
  13.     cout<<"Введи количество вершин  "; cin>>n;
  14.     cout<<"Введи матрицу смежности\n";
  15.  
  16.  
  17.  
  18.     for(i=1;i<=n;i++)
  19.     for(j=1;j<=n;j++)
  20.     {
  21.         cin>>cost[i][j];
  22.         if(cost[i][j]==0)
  23.             cost[i][j]=999; //999 - это что-типа бесконечности. Должно быть больше чем значения веса каждого из ребер в графе
  24.     }
  25.     visited[1]=1;
  26.     cout<<"\n";
  27.  
  28.     while(ne < n)
  29.     {
  30.         for(i=1,min=999;i<=n;i++)
  31.         for(j=1;j<=n;j++)
  32.         if(cost[i][j]< min)
  33.         if(visited[i]!=0)
  34.         {
  35.             min=cost[i][j];
  36.             a=u=i;
  37.             b=v=j;
  38.         }
  39.         if(visited[u]==0 || visited[v]==0)
  40.         {
  41.             path[path_index]=b;
  42.             path_index++;
  43.             //cout<<"\n "<<ne++<<"  "<<a<<"  "<<b<<min; //Можно вывести так
  44.             ne++; //если строчку выше раскомментировать - эту закомментировать
  45.             mincost+=min;
  46.             visited[b]=1;
  47.  
  48.         }
  49.         cost[a][b]=cost[b][a]=999;
  50.     }
  51.  
  52.  
  53.     cout<<"\n";
  54.  
  55.     cout<<1<<" --> ";
  56.     for (int i=0;i<n-1;i++)
  57.     {
  58.       cout<<path[i];
  59.       if (i<n-2) cout<<" --> ";
  60.     }
  61.  
  62.     cout<<"\n Минимальная стоимость  "<<mincost;
  63.  
  64.  
  65.     cin.get();
  66.     cin.get();
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement