题目描述
今天LZY攻城小分队出动了,他们需要在尽可能短的时间内攻占敌人的大本营。战场是一个n * m的二维网格,LZY小分队初始在(0,0)点,敌军大本营在( n -1 ,m - 1)点
每个点上有一个对应的数字代表LZY小分队攻占这个据点需要耗费的时间,现在作为LZY小分队的指挥官,你需要指定一条合适的路线,使LZY小分队能用最短的时间攻占敌人大本营。
输入
测试样例由多组测试数据组成。每组测试数据第一行输入两个正整数n , m ( 1 <= n,m <= 100)
接下来输入n * m 个数字 ,每个数字不超过 500
输出
输出LZY小分队攻占敌人大本营所需要的最短时间
样例输入 Copy
3 3
1 2 3
1 2 3
1 2 3
样例输出 Copy
8
思路:用bfs找路存在优先队列里,每次第一次计算 都是算 最小的值,之后只要找到因为无论如何,都是可以到n,m的 所以只要到n,m直接输出 那就是最少的时间了;```
#include<bits/stdc++.h>
using namespace std;
struct s{
int x;
int y;
int sum;
};
struct q1{
bool operator()(s a1,s a2){
return a1.sum>a2.sum; 优先队列判断方向 和普通的不一样 > 就是 < ,<就是大于
}
};
priority_queue<s,vector<s>,q1>q;
int a[105][105],b[105][1