Здравствуйте, помогите пожалуйста составить генерацию графа и алгоритм Прима в одном коде.
Вот мои наработки:
Код
#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