0
我正在研究一個項目,其中給出了A或B權重的邊的列表。我最終需要確定是否可以創建具有'x'個數的生成樹一個邊緣。用於創建圖形的邏輯C++
現在我正在嘗試製作所有用於創建最小生成樹的邊的列表,並通過製作我已使用的頂點列表來做到這一點。如果兩個頂點已被使用,那麼該邊被丟棄。我遇到的問題是,一旦我完成我的圖形,我通常會留下兩半圖形,因爲連接兩半的邊緣已經被使用,所以這些圖形沒有連接。有關我如何解決這個問題的任何想法,還是總體方法錯誤?
struct Edge{
int start;
int end;
char letter;
bool used;
};
void PrimWhite(...)
{
vector<int> usedVertices;
int count,maxNum,begin,end;
int totalVertexs = 0;
maxNum = whiteEdge.size();
Edge temp;
Edge *point = &temp;
Edge *usedorNah;
for (count = 0;count < maxNum; count++)
{
temp = whiteEdge[count];
usedorNah = &whiteEdge[count];
begin = point->start;
end = point->end;
if ((find(usedVertices.begin(), usedVertices.end(), begin) == usedVertices.end()) && (find(usedVertices.begin(), usedVertices.end(), end) == usedVertices.end()))
{
usedVertices.push_back(begin);
usedVertices.push_back(end);
totalVertexs = totalVertexs + 2;
usedorNah->used = true;
}
else if ((find(usedVertices.begin(), usedVertices.end(), begin) == usedVertices.end()) && (find(usedVertices.begin(), usedVertices.end(), end) != usedVertices.end()))
{
usedVertices.push_back(begin);
totalVertexs++;
usedorNah->used = true;
}
else if ((find(usedVertices.begin(), usedVertices.end(), begin) != usedVertices.end()) && (find(usedVertices.begin(), usedVertices.end(), end) == usedVertices.end()))
{
usedVertices.push_back(end);
totalVertexs++;
usedorNah->used = true;
}