社区讨论
30分求救
P2937[USACO09JAN] Laserphones S参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo2d1eqr
- 此快照首次捕获于
- 2023/10/23 11:50 2 年前
- 此快照最后确认于
- 2023/11/03 11:59 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e2+10;
template <typename T> void read(T &x) {
x=0; char c=getchar();int f=1;
for (;!isdigit(c);c=getchar())if(c=='-')f=-1;
for (;isdigit(c);c=getchar()) x=(x<<3)+(x<<1)+(c^48);
x*=f;
}
const int dx[] = {1, 0, -1, 0};
const int dy[] = {0, 1, 0, -1};
int w,h,xx,yy,xxx,yyy,b,oi=-1;
char a[maxn][maxn];
int bfs(int x,int y)
{
int n=0;
if (xx==xxx&&yy==yyy)
{
return n;
}
for (int i=0;i<4;i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
if (oi!=-1&&a[nx][ny]!='*'&&a[nx][ny]=='.')
{
if((i%2==0&&oi%2==1)||(i%2==1)&&(i%2==0))
{
n++;
oi=i;
}
}
if (nx==xxx&&ny==yyy)
{
return n;
}
}
}
int main()
{
read(w);read(h);
for (int i=1;i<=w;i++)
{
for (int j=1;j<=h;j++)
{
cin>>a[i][j];
if (a[i][j]=='C'&&b==0)
{
xx=i;
yy=j;
b=1;
}
else if (a[i][j]=='C'&&b==1)
{
xxx=i;
yyy=j;
}
}
}
int ans=bfs(xx,yy);
cout<<ans/2<<endl;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...