Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
56750 | 季洁 | 最优布线问题 | C++ | 解答错误 | 0 | 2 MS | 372 KB | 521 | 2022-08-03 13:45:50 |
#include<bits/stdc++.h> using namespace std; int n,xx,k,st[10010],ans; struct p{ int a,b,v; }edge[10010]; bool cmp(p x,p y){ return x.v<y.v; } int main(){ cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>xx; if(i!=j) edge[++k].a=i,edge[k].b=j,edge[k].v=xx; } } sort(edge+1,edge+n*n+1-n,cmp); for(int i=1;i<=n*n-n;i++){ int flag=0; if(st[edge[i].b]==1&&st[edge[i].a]==1) flag=1; if(!flag) ans+=edge[i].v,st[edge[i].a]=1,st[edge[i].b]=1; } cout<<ans; return 0; }