";
cout << v[1];
}
}
/*****************************************************************
* 类描述:最小堆(队列中元素类型)
* 参数描述:
x,用于记录当前解;
s,表示节点在排列树中的层次,从排列树的根节点到该节点的路径为x[0:s],
需要进一步搜索的顶点是x[s+1:n-1]。
cc,表示当前费用,
lcost,是子树费用的下界,
rcost,是x[x:n-1]中顶点最小出边费用和。
*****************************************************************/
class MinHeapNode
{
public:
char name; // 节点的序号
int rcost, // x[s:n-1]中顶点最小出边费用和
lcost, // 子树费用的下界
cc; // 当前费用
int s, // 根节点到当前节点的路径为x[0:s]
*x; // 需要进一步搜索的顶点是x[s+1:n-1]
// 构造节点并递增序号
MinHeapNode()
{
num += 1;
name = num + 'A';
}
// 最小堆中使用下界排序
bool operator<(const MinHeapNode &MH) const
{
return lcost > MH.lcost;
}
// 打印节点信息
void printNode(priority_queue pq)
{
cout << "============== Node: " << name << " ==============" << endl;
cout << "最小出边和(rcost):" << rcost << "\t子树费用的下界(lcost):" << lcost
<
cout << v[1];
}
}
/*****************************************************************
* 类描述:最小堆(队列中元素类型)
* 参数描述:
x,用于记录当前解;
s,表示节点在排列树中的层次,从排列树的根节点到该节点的路径为x[0:s],
需要进一步搜索的顶点是x[s+1:n-1]。
cc,表示当前费用,
lcost,是子树费用的下界,
rcost,是x[x:n-1]中顶点最小出边费用和。
*****************************************************************/
class MinHeapNode
{
public:
char name; // 节点的序号
int rcost, // x[s:n-1]中顶点最小出边费用和
lcost, // 子树费用的下界
cc; // 当前费用
int s, // 根节点到当前节点的路径为x[0:s]
*x; // 需要进一步搜索的顶点是x[s+1:n-1]
// 构造节点并递增序号
MinHeapNode()
{
num += 1;
name = num + 'A';
}
// 最小堆中使用下界排序
bool operator<(const MinHeapNode &MH) const
{
return lcost > MH.lcost;
}
// 打印节点信息
void printNode(priority_queue pq)
{
cout << "============== Node: " << name << " ==============" << endl;
cout << "最小出边和(rcost):" << rcost << "\t子树费用的下界(lcost):" << lcost
<