Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
54863 杨竣周 最优布线问题 C++ 解答错误 0 2 MS 500 KB 604 2022-07-29 17:36:17

Tests(0/5):


#include<bits/stdc++.h> using namespace std; struct edge{ int v,a,b; }; int n,ans,m; edge e[200001]; bool f[100001]; void input(){ int c; scanf("%d",&n); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ scanf("%d",&c); if(c){ e[++m].a=i; e[m].b=j; e[m].v=c; e[++m].a=j; e[m].b=i; e[m].v=c; } } } } bool cmp(edge a,edge b){ return a.v<b.v; } void kruskal(){ sort(e+1,e+m+1,cmp); for(int i=1;i<=m;i++){ if(f[e[i].a]+f[e[i].b]<2){ f[e[i].a]=f[e[i].b]=1; ans+=e[i].v; } } } int main(){ input();kruskal();printf("%d",ans); return 0; }


测评信息: