永远不要怀疑劳动人民的智慧!
把快读里最后的return直接返回零的
我已经不是第一次写错了!
我要是再写错我就******
主要是逆向思维,把从两个点往(1, 1)走想成从(1, 1)点往这两个点走就好了
没有什么的
#include <cstdio>
#include <iostream>
using namespace std;
const int N = ;
int ax, ay, bx, by, ans[N][N], head, tail, x, y;
int dx[] = {-, -, -, -, -, -, , , , , , }, dy[] = {-, -, , , -, , -, , -, -, , };
bool vis[N][N];
struct node{
int x, y;
}zhan[N << ];
int read() {
int s = , w = ;
char ch = getchar();
while(!isdigit(ch)) {if(ch == '-') w = -;ch = getchar();}
while(isdigit(ch)) {s = s * + ch - '';ch = getchar();}
return s * w;
}
void bfs(int ax, int ay, int bx, int by) {
zhan[].x = ;
zhan[].y = ;
tail = ;
ans[][] = ;
vis[][] = ;
while(head < tail) {
head++;
for(int i = ; i < ; i++) {
x = zhan[head].x + dx[i], y = zhan[head].y + dy[i];
if(x >= && x <= && y >= && y <= && !vis[x][y]) {
zhan[++tail].x = x;
zhan[tail].y = y;
ans[x][y] = ans[zhan[head].x][zhan[head].y] + ;
vis[x][y] = ;
}
}
}
}
int main() {
ax = read(), ay = read();
bx = read(), by = read();
bfs(ax, ay, bx, by);
printf("%d\n%d\n", ans[ax][ay] - , ans[bx][by] - );
return ;
}
谢谢收看,祝身体健康!