【优先队列】HDU 1873——看病找医生

来源:互联网 发布:皮蓬生涯第二赛季数据 编辑:程序博客网 时间:2024/05/01 22:08

来源:点击打开链接

看路径记录的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;        else            return 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;}


原创粉丝点击