Новые сообщения · Правила  
  • Страница 1 из 1
  • 1
Модератор форума: Berestovskiy  
Генерация графа. Алгоритм Прима
Здравствуйте, помогите пожалуйста составить генерацию графа и алгоритм Прима в одном коде.
Вот мои наработки:

Код
#include <iostream>#include <conio.h>#include <iomanip>#include <stdlib.h> int a, b, u, v, n, x, y;int ne = 1;int visited[10] = {0};int min;int mincost = 0; void gen_random_graph(int n){    srand(time(0));    int adj_matrix[n][n];     for(int u = 0; u < n; u++)    {        for (int v = u; v < n; v++)        { //Вам не нужно рассчитывать вес дважды, поэтому цикл начинается с u            if(adj_matrix[u] [v]== adj_matrix[v])            {                adj_matrix [v]= rand() % 10 + 1;                std::cout << adj_matrix [v]<< std::endl;            }        }    }} int main(){    int N;    int adj_matrix[n][n];    std::cout << "Enter the number of vertices: ";    std::cin >> N;    gen_random_graph(N);     int path[100] = {0}; //В этот массив будут записываться вершины, по которым составиться путь    int path_index = 0;     std::cout << "\nMatrix" << std::endl; //Введи матрицу     for(int u = 0; u < N; u++)    {        for(int v = 0; v < N; v++)        {            std::cout << adj_matrix [v]<< std::setw(5);        }        std::cout << "\n";    }     while(ne < N)    {        for(u = 1, min = 999; u <= N; u++)        for(v = 1; v <= N; v++)        if(adj_matrix [v]< min)        if(visited != 0)        {            min = adj_matrix[v];            a = x = u;            b = y = v;        }        if(visited [x]== 0 || visited [y]== 0)        {            path[path_index] = b;            path_index++;            //cout<<"\n "<<ne++<<"  "<<a<<"  "<<b<<min; //Можно вывести так            ne++; //если строчку выше раскомментировать - эту закомментировать            mincost += min;            visited [b]= 1;         }        adj_matrix[a] = adj_matrix [a]= 999;    }            std::cout << "Minimum spanning tree\n"; //Минимальное остовное дерево    std::cout << 1 << " --> ";    for(int u = 0; u < N-1; u++)    {        std::cout << path;        if(u < N-2)        {            std::cout<<" --> ";        }    }    std::cout << "\nMinimum cost " << mincost; //Минимальная стоимость    std::cin.get();     return 0;}Ссылки на скриншоты:[/b][/u]

1) https://ibb.co/r4KTh8L
2) https://ibb.co/5vM6SBJ
1 | Автор: karton | 2021-12-20, 12:53 | Изменено: karton - Пн, 2021-12-20, 12:55   |  Репутация: [ + 0 ]
1 | Автор: karton | 2021-12-20, 12:53 | Изменено: karton - Пн, 2021-12-20, 12:55   |  Репутация: [ + 0 ]
  • Страница 1 из 1
  • 1
Поиск: