Untitled
unknown
plain_text
2 years ago
1.4 kB
5
Indexable
#include <iostream> #include <set> #include <vector> using namespace std; void primShortestPath(vector<vector<int>>& graph, int V) { set<int> U; // Set of visited vertices set<int> VU; // Set of unvisited vertices set<pair<int, int>> T; // Set of edges in the minimum spanning tree U.insert(0); // Start with the first vertex for (int v = 1; v < V; v++) { VU.insert(v); } while (U != VU) { int minCost = INT_MAX; int u, v; for (int vertex : U) { for (int neighbor : VU) { if (graph[vertex][neighbor] < minCost) { minCost = graph[vertex][neighbor]; u = vertex; v = neighbor; } } } T.insert({u, v}); U.insert(v); VU.erase(v); } // Print the minimum spanning tree edges cout << "Minimum Spanning Tree Edges:" << endl; for (auto edge : T) { cout << edge.first << " - " << edge.second << endl; } } int main() { int V = 6; // Number of vertices // Example graph represented as an adjacency matrix vector<vector<int>> graph = { {0, 3, 1, 6, 0, 0}, {3, 0, 5, 0, 3, 0}, {1, 5, 0, 5, 6, 4}, {6, 0, 5, 0, 0, 2}, {0, 3, 6, 0, 0, 6}, {0, 0, 4, 2, 6, 0} }; primShortestPath(graph, V); return 0; }
Editor is loading...