NC50362. 新的开始
描述
输入描述
第一行一个整数n,表示矿井总数。
第行,每行一个整数,第i个数表示在第i口矿井上建立发电站的费用。
接下来为一个的矩阵p,其中表示在第i口矿井和第j口矿井之间建立电网的费用(数据保证有,且)。
输出描述
输出仅一个整数,表示让所有矿井获得充足电能的最小花费。
示例1
输入:
4 5 4 4 3 0 2 2 2 2 0 3 3 2 3 0 4 2 3 4 0
输出:
9
说明:
小FF可以选择在4号矿井建立发电站然后把所有矿井都不其建立电网,总花费是3+2+2+2=9。C++(clang++11) 解法, 执行用时: 43ms, 内存消耗: 1024K, 提交时间: 2021-04-08 19:18:04
#include<bits/stdc++.h> using namespace std; int e[600][600]; int main() { int n,ans=0; bool book[600]={0}; cin>>n; for(int i=1;i<=n;i++) { int x; cin>>x; e[0][i]=e[i][0]=x; } e[0][0]=2100000000; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>e[i][j]; book[0]=1; for(int k=1;k<=n;k++) {int u,v; u=v=0; for(int i=0;i<=n;i++) { if(!book[i])continue; for(int j=1;j<=n;j++) { if(book[j])continue; if(e[i][j]<e[u][v])u=i,v=j; } }book[v]=1; ans+=e[u][v]; // cout<<ans<<endl; } cout<<ans; }