hdu 1242 Rescue 优先队列

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1242

方法:采用优先队列对到达监狱的每个位置的时间进行从小到大排序。

代码:

#include 
#include 
#include 
#include 
#include 
using namespace std;
struct node
{
      int x, y, time;
//      bool operator < (struct node a) const
//      {
//            return time > a.time;//按time从小到大
//      }
}start, end;
struct cmp
{
      bool operator () (node &a, node &b)
      {
            return a.time>b.time;//按从小到大
      }
};
bool operator < (struct node a, struct node b)
{
      return a.time > b.time;//按time从小到大
}
char map[202][202];
int a[202][202], N, M, dir[] = {-1, 0, 1, 0, 0, -1, 0, 1};

int bfs(struct node st)
{
//      priority_queue pq;
      priority_queue, cmp> pq;
      pq.push(st);
      while (!pq.empty())
      {
            struct node cur = pq.top();
            pq.pop();
            for (int i=0; i<4; ++i)
            {
                  struct node temp;
                  temp.x = cur.x + dir[2*i];
                  temp.y = cur.y + dir[2*i+1];
                  temp.time = cur.time + 1;
                  if (temp.x>=0 && temp.x=0 && temp.y


你可能感兴趣的:(STL)