Cities (思維 樹)
阿新 • • 發佈:2018-11-08
連結:https://ac.nowcoder.com/acm/contest/123/C
來源:牛客網
題目描述
There are cities in Byteland, and the city has a value . The cost of building a bidirectional road between two cities is the sum of their values. Please calculate the minimum cost of connecting these cities, which means any two cities can reach each other.
輸入描述:
The first line is an integer
representing the number of test cases.
For each test case, the first line is an integer , representing the number of cities, the
second line are positive integers ,
representing their values.
輸出描述:
For each test case, output an integer, which is the minimum cost of connecting these cities.
示例1
輸入
2
4
1 2 3 4
1
1
輸出
12
0
思維題:
題意:將每座城市用公路連線起來,使得城市之間相連,求花費最少的方案(每條路的花費 = 連線兩座城市的和)
思維:用心想想,很明顯這是在構造一個n叉樹,只要確定最小的根節點即可。
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<string> using namespace std; const int maxn = 1e5+5; const int INF = 1e9+7; int a[maxn]; int main() { int n; scanf("%d", &n); int m = INF; for(int i = 0; i < n; i++) scanf("%d", &a[i]); if(n == 1){ printf("0"); return 0; } sort(a, a+n); int sum = 0; for(int i = 1; i < n; i++) sum += a[i]; sum += a[0]; printf("%d\n", sum); return 0; }