最小生成树——最小花费
题目描述
Xez是蟹皇堡王国的国王,今天他想在蟹皇堡的n个城市之间建立 (n - 1)条路把这n个城市连接起来,现已知有建立每条路花费的价值为两个城市的收益之和,现在Xez手头很紧,想请你来计算把这n个城市连接起来所花费最小值。
输入描述:
第一行两个整数n,代表城市的个数。(1<= n <=100)
第二行n个整数v,分别代表每个城市的收益。(0 <= v <= 1000)
输出描述:
一个整数,代表花费的最小值。
示例
输入
4
1 2 3 4
输出
12
分析
这题就是找收益最小的城市,然后算出其他城市的收益加上这个最小城市的收益的总和即可。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,v,f[1001];
int main()
{
cin>>n;
int sum=0;
for(int i=0;i<n;i++){
cin>>f[i];
sum+=f[i];
}
sort(f,f+n);
sum+=(n-2)*f[0];
cout<<sum<<endl;
return 0;
}