求hack
  • 板块灌水区
  • 楼主wo_hen_la
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/28 21:04
  • 上次更新2023/11/28 21:08:00
查看原帖
求hack
794701
wo_hen_la楼主2023/11/28 21:04

P1363

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
struct node{int x,y;};
queue<node> r;
const int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
int n,m;
bool v[1505][1505];
char a[1505][1505];
void bfs(int i,int j)
{
	queue<node> q;
	swap(r,q);
	v[i][j]=1;
	r.push((node){i,j});
	while(!r.empty()){
		node z=r.front();
		r.pop();
		for(int i=0;i<4;i++){
			int tx=z.x+dx[i],ty=z.y+dy[i];
			if(tx<1 || ty<1 || tx>n || ty>m || v[tx][ty] || a[tx][ty]=='#')
				continue;
			v[tx][ty]=1;
			r.push((node){tx,ty});
		}
	}
}
int main()
{
	ios::sync_with_stdio(0);
	while(cin>>n>>m){
		memset(a,0,sizeof(a));
		memset(v,0,sizeof(v));
		int sx,sy;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
				if(a[i][j]=='S'){
					sx=i,sy=j;
				}
			}
		}
		bfs(sx,sy);
		/*for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++) cout<<v[i][j]<<" ";
			cout<<"\n";
		}*/
		bool f=0;
		for(int i=1;i<=m;i++) if(v[1][i]==1 && v[n][i]==1){
			cout<<"Yes\n";
			f=1;
			break;
		}
		if(!f) for(int i=1;i<=n;i++) if(v[i][1]==1 && v[i][m]==1){
			cout<<"Yes\n";
			f=1;
			break;
		}
		if(!f) cout<<"No\n";
	}
	
	return 0;
}
2023/11/28 21:04
加载中...