求助
  • 板块学术版
  • 楼主lucky_loser
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/7/9 10:26
  • 上次更新2023/11/3 10:57:04
查看原帖
求助
754146
lucky_loser楼主2023/7/9 10:26

无法输出,代码如下

#include<bits/stdc++.h>
typedef long long ll;
#define pb(x) push_back(x)
#define pf(x) push_front(x)
#define eb(x) emplace_back(x)
#define ef(x) emplace_front(x)
#define sz(v) ((int)(v).size())
#define file_r(x) freopen(x,  "r",  stdin)
#define file_w(x) freopen(x,  "w",  stdout)
#define lowbit(x) ((x) & (-x))
#define rep(i, n) for (int i = 1; i <= (n); i++)
#define repd(i, n) for (int i = (n - 1); i >= 0; i--)
#define in1(n) n=read()
#define in2(n, m) n=read(),m=read()
#define in3(x, y, z) x=read(),y=read(),z=read()
#define sort_asc(c) sort(c.begin(), c.end())
#define iter(it, v) for (auto it = v.begin(); it != v.end(); ++ it)
using namespace std;
struct node
{
	int x,y,step;
};
ll n,m,x,y;
bool vis[101][101];
ll dx[13]={0,2,-2,2,-2,1,2,-1,-2,1,2,-1,-2};
ll dy[13]={0,2,2,-2,-2,2,1,-2,-1,-2,-1,2,1};
int read()
{
    int s=0,w=1;
    char c=getchar();
    while(c<'0'||c>'9')
    {
        if(c=='-')
            w=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9')
    {
        s=s*10+c-'0';
        c=getchar();
    }
    return s*w;
}
void print(int x)
{
	if(x<0)
	{
		putchar('-');
		x=-x;
	}
	if(x>=10)
		print(x/10);
	putchar(x%10+'0');
	return;
}
void bfs(ll n,ll m) 
{
	queue <node> q;
	memset(vis,1,sizeof(vis));
	node s,ss;
	s.x=x;
	s.y=y;
	s.step=0;
	q.push(s);
	while(!q.empty())
	{
		s=q.front();
		q.pop();
		rep(i,12)
		{
			int r=s.x+dx[i];
			int l=s.y+dy[i];
			if(r<0||r>=100||l<0||l>=100||vis[r][l]==false)
			{
				vis[r][l]=false;
				ss.x=r;
				ss.y=l;
				ss.step=s.step+1;
				q.push(ss);
				if(r==1&&l==1)
				{
					cout<<s.step+1<<endl;
					return;
				}			 
			}
		}
	}
		
}
int main()
{
	in2(n,m);
	in2(x,y);
	bfs(n,m);
	bfs(x,y);
	return 0;
}

题目

2023/7/9 10:26
加载中...