社区讨论
5分求条
P12684 【MX-J15-T4】叉叉学习魔法参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhj1zynh
- 此快照首次捕获于
- 2025/11/03 19:25 4 个月前
- 此快照最后确认于
- 2025/11/03 19:25 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int dis1[4][2]={0,1,1,0,0,-1,-1,0},dis2[4][2]={1,-1,-1,1,-1,-1,1,1};
int n,m;
bool vis[5003][5004];
char a[5003][5004];
struct node{
int x,y,mofa,step;
};
deque<node>q;
vector<node>s,s1;
void bfs(int sx,int sy){
q.push_back({sx,sy,0,0});
while(!q.empty()){
node t=q.front();
while(!q.empty()&&t.mofa==q.front().mofa&&t.step==q.front().step){
t=q.front();
q.pop_front();
for(int i=0;i<4;i++){
int x=t.x+dis1[i][0];
int y=t.y+dis1[i][1];
if(x<=0||y<=0||x>n||y>m||a[x][y]=='#'||vis[x][y]==1){
continue;
}
if(a[x][y]=='W'){
cout<<t.step+1<<" "<<t.mofa<<endl;
// for(int i=1;i<=n;i++){
// for(int j=1;j<=m;j++){
// cout<<vis[i][j];
// }
// cout<<endl;
// }
//exit(1);
}
vis[x][y]=1;
s1.push_back({x,y,t.mofa,t.step+1});
}
for(int i=0;i<4;i++){
int x=t.x+dis2[i][0];
int y=t.y+dis2[i][1];
if(x<=0||y<=0||x>n||y>m||a[x][y]=='#'||vis[x][y]==1){
continue;
}
if(a[x][y]=='W'){
cout<<t.step<<" "<<t.mofa+1<<endl;
// for(int i=1;i<=n;i++){
// for(int j=1;j<=m;j++){
// cout<<vis[i][j];
// }
// cout<<endl;
//}
//exit(1);
}
vis[x][y]=1;
s.push_back({x,y,t.mofa+1,t.step});
}
}
if(s.size()!=0){
for(int i=0;i<=s.size()-1;i++){
q.push_front(s[i]);
}
}
if(s1.size()!=0){
for(int i=0;i<=s1.size()-1;i++){
q.push_back(s1[i]);
}
}
s.clear();
s1.clear();
}
}
int main(){
ios::sync_with_stdio(0), cin.tie(0);
cin>>n>>m;
int sx,sy;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
if(a[i][j]=='X'){
sx=i;
sy=j;
}
}
}
vis[sx][sy]=1;
bfs(sx,sy);
cout<<-1<<" "<<-1;
return 0;
}
RE 19个点
AC 1个点
有没有大佬帮忙看一下蒟蒻的代码
回复
共 0 条回复,欢迎继续交流。
正在加载回复...