RE了4个,求调(样例对的)
#include<bits/stdc++.h>
using namespace std;
int fa[105];
struct node{
int x,y,z;
} edge[105<<4];
int n,cost,cnt,tot,MST;
int find(int x){
if(fa[x]!=x) fa[x]=find(fa[x]);
return fa[x];
}
bool cmp(node a,node b){
return a.z<b.z;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>cost;
if(cost!=0){
cnt++;
edge[cnt]=node{i,j,cost};
}
}
}
sort(edge+1,edge+cnt+1,cmp);
for(int i=1;i<=cnt;i++){
int rx=find(edge[i].x);
int ry=find(edge[i].y);
if(rx==ry) continue;
fa[rx]=ry;
tot++;
MST+=edge[i].z;
if(tot==n-1) break;
}
cout<<MST<<endl;
return 0;
}