来源:点击打开链接
看路径记录的BFS之前,再看一遍优先队列的用法。
优先队列的排序规则可以用运算符重载的方式完成,通常意义下,应该用friend bool operator <进行重载。
#include <iostream>#include <cstring>#include <queue>#include <string>using namespace std;class hospital{public:int level;int id;friend bool operator < (hospital c1,hospital c2){if(c1.level!=c2.level)return c1.level<c2.level;elsereturn c1.id>c2.id;}};int main(){int testcase;while(cin>>testcase){int doc,level;int as=0;string op;priority_queue<hospital> p[4];hospital tmp;while(testcase--){cin>>op;if(op=="IN"){as++;cin>>doc>>level;tmp.level=level;tmp.id=as;//cout<<"idis"<<tmp.id<<endl;p[doc].push(tmp);}else if(op=="OUT"){cin>>doc;if(p[doc].empty())cout<<"EMPTY"<<endl;else{tmp=p[doc].top();p[doc].pop();cout<<tmp.id<<endl;}}}}return 0;}