Untitled
unknown
plain_text
3 years ago
1.1 kB
1
Indexable
#include <bits/stdc++.h> using namespace std; #define ll long long ll V,e; ll graph[1001][1001]; int minKey(ll key[], bool mstSet[]) { int min = INT_MAX, min_index; for (int v = 0; v < V; v++) if (mstSet[v] == false && key[v] < min) min = key[v], min_index = v; return min_index; } void prims() { ll parent[V]; ll key[V]; bool mstSet[V]; for (int i = 0; i < V; i++) key[i] = INT_MAX, mstSet[i] = false; key[0] = 0; parent[0] = -1; for (int count = 0; count < V - 1; count++) { int u = minKey(key, mstSet); mstSet[u] = true; for (int v = 0; v < V; v++) if (graph[u][v] && mstSet[v] == false && graph[u][v] < key[v]) parent[v] = u, key[v] = graph[u][v]; } cout<<"Edge \tWeight\n"; for (int i = 1; i < V; i++) cout<<parent[i]<<" - "<<i<<" \t"<<graph[i][parent[i]]<<" \n"; } int main() { cin>>V>>e; for(ll i=0;i<e;i++){ ll u,v,w; cin>>u>>v>>w; graph[u-1][v-1]=w; graph[v-1][u-1]=w; } prims(); return 0; }
Editor is loading...