Наивное выполнение алгоритма Prim's в Algo должно дать время работы O (mn). Но у меня есть 3 для циклов в Prim-функции (что делает время выполнения кубическим). Где я иду не так?Время выполнения приведенного ниже алгоритма алгоритма Прима
void Graph::Prim (const int src) //Nodes start from 1 to n-1
{ // n = Nodes+1.
NodeExplored[src] = true;
for(int i=1; i<n-1;++i) //n-2 iterations
{
int minIndex;
int minEW = 10000;
int svIndex;
for(int sv =1;sv < n;sv++) //To check for Explored nodes
{
if(NodeExplored[sv]==true)
{
for(auto i = G[sv].begin();i!= G[sv].end();++i)
{ //To scan through the edges from sv.
int dv = i->first; //Destination Vertex
int ew = i->second; //Edge Weight b/w sv & dv.
if(NodeExplored[dv]==false && ew < minEW)
{
minEW = ew;
minIndex = dv;
svIndex = sv;
}
}
}
}
NodeExplored[minIndex] = true;
MST[svIndex].push_back(make_pair(minIndex,minEW));
MST[minIndex].push_back(make_pair(svIndex,minEW));
}
Вместо очереди, будет вектор (который будет хранить «разведанные Вершины») работают? Поэтому вместо сканирования через все вершины [for (int sv = 1; sv