开O2后RE 不开AC,求助
查看原帖
开O2后RE 不开AC,求助
92359
MisakaQAQ楼主2024/8/15 21:21

思路是从(1,1)跑反图

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,x1,y1,x2,y2;
int dis[50][50];
int dx[20]={1,-1,-1,1,2,-2,-2,2,2,-2,2,-2};
int dy[20]={2,-2,2,-2,1,-1,1,-1,2,-2,-2,2};

struct node{
	int x,y,dis;
};

int bfs(int sx,int sy){
	memset(dis,-1,sizeof dis);
	queue<node> q;
	dis[sx][sy] = 0;
	q.push({sx,sy});
	while(q.size()){
		int x = q.front().x;
		int y = q.front().y;
		q.pop();
		for(int i = 0; i < 12; i++){
			int nx = x + dx[i];
			int ny = y + dy[i];
			if(nx < 1 || ny < 1 || nx > 40 || ny > 40)continue;
			if(dis[nx][ny]!=-1)continue;
			dis[nx][ny] = dis[x][y] + 1;
			q.push({nx,ny});
		}
	}
}

int main() {
	cin >> x1 >> y1 >> x2 >> y2;
	bfs(1,1);
	cout << dis[x1][y1] << endl << dis[x2][y2];
    return 0;
}
2024/8/15 21:21
加载中...