7-29 修理牧场 (25 分)

哈夫曼树的经典题

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
const int N = 55;
int main(){
	int n, x;
	cin>>n;
	priority_queue<int, vector<int>, greater<int>> pq;
	for(int i = 0; i < n; i++){
		cin>>x;
		pq.push(x);
	}
	int res = 0;
	while(pq.size() > 1){
		int a = pq.top();
		pq.pop();
		int b = pq.top();
		pq.pop();
		res += a+b;
		pq.push(a+b);
	}
	cout<<res<<endl;
	return 0;
}

你可能感兴趣的:(数据结构与算法题目集,哈夫曼树,Tree)