Алгоритм Прима c ++ (Карты, векторы и minPriorityQueue)

Я работал над этой проблемой в течение 3 дней, и я в тупике. Мы должны реализовать алгоритм Прима, используя 2 карты (строка, вершина (класс) и строка, вектор). Первый хранит букву как имя, а также пи и ключ в классе вершин. На 2-й карте хранятся буквенное имя вершины и вектор всех ее соседей. Я получаю ошибки компиляции, и это из-за проблем с доступом к элементам вектора на карте. В любом случае, вот мой код. (n.weight, которое я знаю, неверно, потому что это итератор, но мне нужен соседний класс в этом месте в векторе, чтобы получить доступ к переменной веса)

void Graph::mst(string start){
string u;
if(vertices.find(start) != vertices.end()){

for (std::map<string,Vertex>::iterator it=vertices.begin(); it!=vertices.end(); ++it){
it->second.key = 100;
it->second.pi = "NIL";
}
vertices[start].key = 0;

for (std::map<string,Vertex>::iterator it=vertices.begin(); it!=vertices.end(); ++it){
minQ.insert(it->first, it->second.key);
}
u = minQ.extractMin();
while(u != "empty"){
cout << u << " " << vertices[u].pi << " " << vertices[u].key <<endl;
for (std::vector<Neighbor>::iterator v = adjList.find(u)->second.begin();
v!=adjList.find(u)->second.end(); ++v){
if(minQ.isMember(v->name) && vertices[u].key < (problem here)){}
}
}

u = minQ.extractMin();
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]