可以最短路来写,这里提供一个不一样的思路 0-1 BFS
一个方向射出不需要花费(0),而往四个方向射出需要花费(1)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
int n,m;
char g[1005][1005];
int dis[1005][1005][4];
bool vis[1005][1005][4];
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
deque<int> q;
inline void add_front(int x,int y,int dir,int d)
{
if(d<dis[x][y][dir])
{
dis[x][y][dir]=d;
q.push_front(dir);
q.push_front(y);
q.push_front(x);
}
}
inline void add_back(int x,int y,int dir,int d)
{
if(d<dis[x][y][dir])
{
dis[x][y][dir]=d;
q.push_back(x);