Chcę przechowywać krawędzie grafu według wag, od najmniejszej do największej. Postanowiłem użyć do tego kolejki piorytetowej, poniżej kod:
struct Edge {
int from;
int to;
int weight;
Edge(int from, int to, int weight) {
this->from = from;
this->to = to;
this->weight = weight;
}
};
struct CompareWeight {
bool operator()(const Edge& e1, const Edge& e2) {
return e1.weight > e2.weight;
}
};
priority_queue<Edge, vector<Edge>, CompareWeight> pq;
for (auto edge : edges)
pq.push(edge);
Efekt jest taki, że wrzuca mi do kolejki te krawędzie losowo, jakby w ogóle nie porównywało wag. Nie rozumiem, gdzie popełniam błąd - czy problem leży w przeciążonym operatorze?