- [USACO11OPEN] Corn Maze S
aa
- 2024-5-16 19:27:47 @
#include #include #include using namespace std; int n,m,x1,y1,x2,y2; bool jud[26],mark[305][305]; char map[305][305]; int rx[4]={0,0,-1,1}; int ry[4]={1,-1,0,0}; struct zz{ int xx,yy; }zs[26][2]; struct node{ int x,y,t; }; queuea; void bfs(){ node S; S.x=x1; S.y=y1; S.t=0; a.push(S); while(!a.empty()){ node now=a.front(); a.pop(); if(now.xx2&&now.yy2){ cout<<now.t; break; } if(mark[now.x][now.y])continue; mark[now.x][now.y]=1; for(int i=0;i<4;i++){ int to_x=now.x+rx[i]; int to_y=now.y+ry[i];
if(to_x<1||to_x>n||to_y<1||to_y>m)continue;
if(map[to_x][to_y]=='#')continue;
if(map[to_x][to_y]>='A'&&map[to_x][to_y]<='Z'){
char Now=map[to_x][to_y]-'A';
if(to_x==zs[Now][0].xx&&to_y==zs[Now][0].yy){
to_x=zs[Now][1].xx;
to_y=zs[Now][1].yy;
}
else{
to_x=zs[Now][0].xx;
to_y=zs[Now][0].yy;
}
}
node New;
New.x=to_x;
New.y=to_y;
New.t=now.t+1;
a.push(New);
}
}
} int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>map[i][j]; if(map[i][j]'@')x1=i,y1=j; if(map[i][j]'=')x2=i,y2=j; if(map[i][j]!='@'&&map[i][j]!='='&&map[i][j]!='.'&&map[i][j]!='#'){ int now=map[i][j]-'A'; if(!jud[now]){ zs[now][0].xx=i; zs[now][0].yy=j; jud[now]=1; } else{ zs[now][1].xx=i; zs[now][1].yy=j; } } } } bfs(); return 0; }
1 条评论
-
fupeixin LV 6 @ 2024-5-27 14:09:13
是的分隔符吧你 ,杠一九年 二uej 让她以后基本二的涂鸦特我 已经
- 1
信息
- ID
- 757
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 23
- 已通过
- 6
- 上传者