模版题,水过。。。
#include <iostream>
#include <climits>
using namespace std;
const int maxn = 105;
int n;
int edge[maxn][maxn];
int lowcost[maxn];
int Prim(){
int sum = 0;
for(int i = 0; i < n; i++)
lowcost[i] = edge[0][i];
lowcost[0] = -1;
for(int i = 0; i < n-1; i++){
int min = INT_MAX;
int v;
for(int j = 0; j < n; j++){
if(lowcost[j] != -1 && lowcost[j] < min){
min = lowcost[j]; v = j;
}
}
sum += min;
lowcost[v] = -1;
for(int j = 0; j < n; j++){
if(edge[v][j] < lowcost[j]){
lowcost[j] = edge[v][j];
}
}
}//end of for
return sum;
}//end of Prim
int main(){
while(cin>>n){
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++)
cin>>edge[i][j];
}
cout<<Prim()<<"\n";
}
return 0;
}
代码: