#include<iostream>
using namespace std;
const int max=7;
const int mm=100;
int matrix[max];
int edge[max][max];
int newedge[max][max];
bool visited[max];
void insert(int a,int b,int w){
edge[a][b]=edge[b][a]=w;
}
int main(){
int i,j;
for(i=0;i<max;i++){
for(j=0;j<max;j++){
edge[i][j]=mm;
newedge[i][j]=mm;
}
}
insert(0,1,7);
insert(1,2,8);
insert(0,3,5);
insert(1,3,9);
insert(1,4,7);
insert(2,4,5);
insert(3,4,15);
insert(3,5,6);
insert(4,5,8);
insert(4,6,9);
insert(5,6,11);
int v=0;
matrix[v++]=3;
visited[3]=true;
while(v<max){
int min=mm;
int u=0;
int start=0;
for(i=0;i<v;i++){
int k=matrix[i];
for(j=0;j<max;j++){
if(min>edge[k][j]&&!visited[j]){
min=edge[k][j];
start=k;
u=j;
}
}
}
visited[u]=1;
matrix[v++]=u;
newedge[start][u]=min;
}
int sum=0;
for(i=0;i<max;i++){
for(j=0;j<max;j++){
if(newedge[i][j]<mm){
sum+=newedge[i][j];
}
}
}
cout<<"sum="<<sum<<endl;
return 0;
}
实质是贪心思想的应用。