提交时间:2022-08-03 15:54:40

运行 ID: 56891

#include <bits/stdc++.h> using namespace std; int n,a[101][101]; int dis[101],state[101]; int ans; void Prim(){ memset(dis,0x3f,sizeof(dis)); dis[1]=0; for(int i=1;i<=n;i++){ int t=-1; for(int j=1;j<=n;j++){ if(!state[j]&&(t==-1||dis[j]<dis[t])) t=j; } state[t]=1,ans+=dis[t]; for(int j=1;j<=n;j++){ dis[j]=min(dis[j],a[t][j]); } } } int main(){ cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) cin>>a[i][j]; } Prim(); cout<<ans; return 0; }