@[xuhrrr](/user/113001) ???我也是WA了最后一个点,能讲讲怎么改吗?
by Mr_user @ 2024-01-21 18:17:39
@[Mr_user](/user/1255776)
对于我的代码的话就是把每个node的结构体里面再加一个ans来记录每一步的答案,然后主要的改变是在处理bfs模板内的A-Z的传送门的时候不用赋值改变ans,直接用pop出来的那一个元素的ans即可
**第一处改变**
```cpp
struct node{
int x,y,ans;
};
queue<node>q;
```
**第二处改变**
```cpp
while(!q.empty()){
node tmp = q.front();
q.pop();
int ux = tmp.x;
int uy = tmp.y;
if(map[ux][uy] == '='){
cout << tmp.ans << endl;
break;
}
if(map[ux][uy] >= 'A' && map[ux][uy] <= 'Z'){
int temp = map[ux][uy] - 'A';
if(a[temp].x == ux && a[temp].y == uy){
ux = a[temp]._x;
uy = a[temp]._y;
//ans[ux][uy] = ans[a[temp].x][a[temp].y];
}
else{
ux = a[temp].x;
uy = a[temp].y;
//ans[ux][uy] = ans[a[temp]._x][a[temp]._y];
}
}
//cout << ux << " " << uy << endl;
for(int k = 0 ; k < 4 ; ++k){
int nx = ux + dir[k][0];
int ny = uy + dir[k][1];
if(nx <= 0 || nx > n || ny <= 0 || ny > m || vis[nx][ny] != 0){
continue;
}
vis[nx][ny] = 1;
node newnode = {nx,ny,tmp.ans + 1};
q.push(newnode);
}
}
```
by xuhrrr @ 2024-01-22 12:47:57