Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
56891 | 杨中琦 | 最优布线问题 | C++ | 通过 | 100 | 2 MS | 288 KB | 503 | 2022-08-03 15:54:40 |
#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; }