#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
const int maxn=110;
int a[maxn][maxn],d[maxn],p[maxn],oo=100000000,ans=0,u;
int main(void){
int n;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];//读入一个二维矩阵
for(int i=1;i<=n;i++)d[i]=oo;
d[1]=0;//不能定p[1]=1!!!首先进入的点长度为0
for(int i=1;i<=n;i++){
int zx=oo;
for(int j=1;j<=n;j++)
if(!p[j] && d[j]<zx){//j点未被标记
zx=d[j];//找到最小边
u=j;
}
p[u]=1;ans+=d[u];//标记这个进入的点 ps:此处应该用u而不是j!!
for(int j=1;j<=n;j++){
if(!p[j] && a[u][j]!=0 && d[j]>a[u][j])
d[j]=a[u][j];
}
}
cout<<ans<<endl;
return 0;
}
记得复习!!包括以前。。。。。。。。。。
注意大括号。。。QAQ