社区讨论
码风优良,玄关求条
AT_abc317_e [ABC317E] Avoid Eye Contact参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m5xuv11y
- 此快照首次捕获于
- 2025/01/15 20:05 去年
- 此快照最后确认于
- 2025/01/15 21:08 去年
CPP
/***********
AT_abc317_e
作者:Lzy
***********/
#include<bits/stdc++.h>
#define N 2005
using namespace std;
int n,m,p,q,arr[N][N],u1,v1;
int dx[] = {0,-1,1, 0,0};
int dy[] = {0, 0,0,-1,1};
char a[N][N];
void bfs(int u,int v)
{
queue<int> qa;
queue<int> qb;
queue<int> foot;
qa.push(u);
qb.push(v);
foot.push(0);
while(!qa.empty())
{
int x = qa.front();
int y = qb.front();
int t = foot.front();
qa.pop();
qb.pop();
foot.pop();
if(a[x][y] == 'G')
{
cout << t << endl;
return ;
}
t++;
for(int i = 1;i <= 4;i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
if(nx >= 1 && nx <= n && ny >= 1 && ny <= m && arr[nx][ny] < 0)
{
arr[nx][ny] = t;
qa.push(nx);
qb.push(ny);
foot.push(t);
}
}
}
cout << -1 << endl;
return ;
}
int main()
{
ios :: sync_with_stdio(0);
cin >> n >> m;
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= m;j++)
{
cin >> a[i][j];
if(a[i][j] == 'S') p = i,q = j;
}
}
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= m;j++)
{
if(a[i][j] == 'v')
{
for(int k = i + 1;k <= n && a[k][j] == '.';k++)
{
a[k][j] = '#';
}
}
if(a[i][j] == '^')
{
for(int k = i - 1;k >= 1 && a[k][j] == '.';k--)
{
a[k][j] = '#';
}
}
if(a[i][j] == '>')
{
for(int k = j + 1;k <= m && a[i][k] == '.';k++)
{
a[i][k] = '#';
}
}
if(a[i][j] == '<')
{
for(int k = j - 1;k >= 1 && a[i][k] == '.';k--)
{
a[i][k] = '#';
}
}
}
}
// cout << endl;
// for(int i = 1;i <= n;i++)
// {
// for(int j = 1;j <= m;j++)
// {
// cout << a[i][j];
// }
// cout << endl;
// }
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= m;j++)
{
if(a[i][j] == '.' || a[i][j] == 'G')
{
arr[i][j] = -1;
}
}
}
bfs(p,q);
// for(int i = 1;i <= n;i++)
// {
// for(int j = 1;j <= m;j++)
// {
// printf("%3d",arr[i][j]);
// }
// cout << endl;
// }
return 0;
}
Wrong Answer on #4.
回复
共 0 条回复,欢迎继续交流。
正在加载回复...