Алгоритм Прима 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 ответов

Другие вопросы по тегам