代码如下
#include<bits/stdc++.h>
using namespace std;
long long n,a[101][101],vis[201],cnt,ans,temp,see;
struct node{
long long Long;
int A,B;
};
node b[101];
bool cmp(node x,node y){
return x.Long<y.Long;
}
int main(){
cin>>n;
long long cnt=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
if(a[i][j]!=0){
b[++cnt].A=i;
b[cnt].B=j;
b[cnt].Long=a[i][j];
}
}
}
sort(b+1,b+cnt+1,cmp);
for(int j=1;j<=cnt;j++){
if(vis[b[j].A]!=vis[b[j].B]||vis[b[j].A]==0||vis[b[j].B]==0){
ans+=b[j].Long;
temp++;
if(vis[b[j].A]==0&&vis[b[j].B]==0){
vis[b[j].A]=see++;
vis[b[j].B]=vis[b[j].A];
}
else if(vis[b[j].A]==0){
vis[b[j].A]=vis[b[j].B];
}
else if(vis[b[j].B]==0){
vis[b[j].B]=vis[b[j].A];
}
else{
for(int i=1;i<=n;i++){
if(vis[i]==vis[b[j].B]){
vis[i]=vis[b[j].A];
}
}
}
}
if(temp==n){
break;
}
}
cout<<ans;
return 0;
}
那位神?能大发慈悲帮帮本萌新,谢谢了!!!