哈弗曼树是能保证权值*路径的和最小的数据结构
哈弗曼树的构造是建立在小根堆以上的
首先先建立一个小根堆
每次取出小根堆的两个顶端元素
再把两个元素相加放入小根堆中直到只剩一个元素
ans就是最小权值之和
long long ans=0;
while (len>1)
{
long long a,b;
a=p[1];
heap_pop();
b=p[1];
heap_pop();
ans+=(a+b);
heap_insert(a+b);
}