有大佬可以帮忙看一下哪里错了吗?
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
int x,y,c;
};
int xx,yy,vis[55][55];
int dx[12]={1,1,2,2,2,2,-1,-1,-2,-2,-2,-2};
int dy[12]={-2,2,-2,-1,1,2,-2,2,-1,1,-2,2};
queue<node>q;
int bfs(int x,int y){
q.push((node){x,y,0});
vis[x][y]=1;
while(!q.empty()){
node nd=q.front();
q.pop();
for(int i=0;i<12;i++){
int zx=nd.x+dx[i];
int zy=nd.y+dy[i];
if(zx>=1 && zy>=1 && zx<=50 && zy<=50 && !vis[zx][zy]){
q.push((node){zx,zy,nd.c+1});
vis[zx][zy]=1;
}
if(zx==x && zy==y) return nd.c+1;
}
}
}
int main(){
cin>>xx>>yy;
cout<<bfs(1,1)<<endl;
memset(vis,0,sizeof vis);
while(!q.empty()) q.pop();
cin>>xx>>yy;
cout<<bfs(1,1);
return 0;
}