本文整理汇总了C++中Graph::GetWeight方法的典型用法代码示例。如果您正苦于以下问题:C++ Graph::GetWeight方法的具体用法?C++ Graph::GetWeight怎么用?C++ Graph::GetWeight使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Graph
的用法示例。
在下文中一共展示了Graph::GetWeight方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: KruskalAlogrithm
void MST::KruskalAlogrithm(Graph<VerDataInfo> & gra){
MSTEdgeNode temp;
int numver = gra.SizeOfVertices();
int numedg = gra.SizeOfEdge();
MinHeap<MSTEdgeNode> heapEdge(numedg);
UFSet setEdge(numver);
for (int loc = 0; loc < numver; loc++)
for (int locx = loc + 1; locx < numver; locx++)
if (gra.GetWeight(loc, locx) < MAXWEIGHT){
temp.start = loc;
temp.end = locx;
temp.key = gra.GetWeight(loc, locx);
heapEdge.Insert(temp);
}
int count = 1;
while (count < numver){
temp = heapEdge.Front();
heapEdge.Remove();
int loc = setEdge.Find(temp.start);
int locx = setEdge.Find(temp.end);
if (loc != locx){
setEdge.Union(locx, loc);
Insert(temp);
count++;
}
}
}
示例2: PrimAlogrithm
void MST::PrimAlogrithm(Graph<VerDataInfo> & gra, const int verStart){
if (verStart == -1) return;
MSTEdgeNode temp;
int numVer = gra.SizeOfVertices();
int numEdg = gra.SizeOfVertices();
int ver = verStart;
MinHeap<MSTEdgeNode> heapEdge(numEdg);
bool *VerSet = new bool[numVer];
for (int i = 0; i < numVer; i++) VerSet[i] = false;
VerSet[ver] = true;
int count = 1;
do{
int verx = gra.GetFirstNeighbor(ver);
while (verx != -1){
if (VerSet[verx] == false){
temp.start = verx;
temp.end = ver;
temp.key = gra.GetWeight(ver, verx);
heapEdge.Insert(temp);
}
verx = gra.GetNextNeighbor(ver, verx);
}
while (heapEdge.Empty() == false && count < numVer){
temp = heapEdge.Front();
heapEdge.Remove();
if (VerSet[temp.start] == false){
Insert(temp);
ver = temp.start;
VerSet[ver] = true;
count++;
break;
}
}
} while (count < numVer);
}