一:
struct Node { int v; int dis; Node(int a, int b) :v(a), dis(b) {} //小的排前面,下同 friend bool operator < (const Node& a, const Node& b) { return a.dis > b.dis; } }; priority_queue<Node>pq;
二:
struct Node { int v; int dis; Node(int a, int b) :v(a), dis(b) {} bool operator<(const Node& a)const { return dis < a.dis; } } priority_queue<Node>pq;
三:
struct Node { int v; int dis; Node(int a, int b) :v(a), dis(b) {} }; struct cmp { bool operator () (const Node& a, const Node& b)const { return a.dis > b.dis; } }; priority_queue<Node,vector<Node>,cmp>pq;
个人比较推荐一和二,较为简洁。