GCSG01 @ 2024-01-06 11:18:22
//#include<windows.h>
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,m,ans;
char a[105][105];
bool f[105][1055];
void dfs(int x,int y)
{
if(x<=0||x>n||y<=0||y>m)return;
f[x][y]=1;
if(x==n&&y==m)
{
ans=1;
return;
}
if(a[x][y+1]=='.'&&!f[x][y+1])dfs(x,y+1),f[x][y+1]=1;
if(a[x][y-1]=='.'&&!f[x][y-1])dfs(x,y-1),f[x][y-1]=1;
if(a[x+1][y]=='.'&&!f[x+1][y])dfs(x+1,y),f[x+1][y]=1;
if(a[x+1][y]=='.'&&!f[x-1][y])dfs(x-1,y),f[x-1][y]=1;
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
dfs(1,1);
if(ans)cout<<"Yes";
else cout<<"No";
return 0;
}
样例输出 No
但评测全AC。
by leiaxiwo @ 2024-01-06 11:34:25
@GCSG01 好像题目没有简单数据,即仅一条唯一可达路,无分叉,你这个搜索在某个部分欠考虑导致搜索时因为没有分叉直接结束了
by GCSG01 @ 2024-01-06 11:38:08
好的,谢谢。
by leiaxiwo @ 2024-01-06 11:40:32
@GCSG01 经查,是读入错误。。。
by leiaxiwo @ 2024-01-06 11:41:01
@GCSG01 这是一组hack
3 2
.####
..###
#.###
by GCSG01 @ 2024-01-06 11:45:34
输入不应该是
3 5
.####
..###
#.###
吗?
by wyc0809 @ 2024-01-08 20:04:09
话说……
(1,1)(1,1) 和 (n, m)(n,m) 均为空地。