社区讨论
五彩斑斓求条
P1825[USACO11OPEN] Corn Maze S参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mhjshz7m
- 此快照首次捕获于
- 2025/11/04 07:47 4 个月前
- 此快照最后确认于
- 2025/11/04 07:47 4 个月前

#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<cstdlib>
using namespace std;
#define PI 3.141593
#define maxm 1100
#define MAXEDGE 100000
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define nxp next_permutation
#define prq priority_queue
#define cfor(i,a,b) for(int i=(a);i<(b);i++)
struct point{
pair<int,int>wz;
int bs;
};
char a[300][300];
int n,m;
pair<int,int> another(pair<int,int>b){
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]==a[b.first][b.second]){
if(i!=b.first&&j!=b.second){
return make_pair(i,j);
}
}
}
}
}
int main() {
//int cnt=0;
cin>>n>>m;
pair<int,int>st,en;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
if(a[i][j]=='@'){
st.first=i;
st.second=j;
}
if(a[i][j]=='='){
en.first=i;
en.second=j;
}
}
}
queue<point>q;
bool vis[300][300];
memset(vis,0,sizeof(vis));
vis[st.first][st.second]=1;
q.push(point({st,0}));
const int dx[]={1,-1,0,0};
const int dy[]={0,0,-1,1};
while(!q.empty()){
point now=q.front();
q.pop();
for(int i=0;i<4;i++){
int x=now.wz.first+dx[i],y=now.wz.second+dy[i];
if(x>=0&&x<n&&y>=0&&y<=m&&a[x][y]!='#'&&vis[x][y]==0){
vis[x][y]==1;
int xybs=now.bs+1;
if(a[x][y]=='='){
cout<<xybs;
return 0;
}
if(a[x][y]>='A'&&a[x][y]<='Z'){
pair<int,int>tmp=make_pair(x,y);
pair<int,int>tmp2=another(tmp);
x=tmp2.first,y=tmp2.second;
}
q.push(point{make_pair(x,y),xybs});
}
}
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...