Codeforces Round #301 (Div. 2) B. School Marks
2024-08-21 08:23:12
其实是很水的一道bfs题,昨晚比赛的时候没看清题意,漏了一个条件。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<vector>
#define maxn
#define INF 1000000000
using namespace std;
int vist[][];
char str[][];
int dirx[]={-,,,};
int diry[]={,,,-};
int m,n,stx,sty,edx,edy;
int judge(int x,int y)
{
if(x>=&&x<n&&y>=&&y<m)
return ;
return ;
}
int bfs()
{
queue<int> q;
stx--;
sty--;edx--;edy--;
int num=stx*m+sty;
q.push(num);
//vist[stx][sty]--;就改的这个地方,因为起点和终点有可能相同
while(!q.empty())
{
num=q.front();
//printf("%d==\n",num);
q.pop();
int xx=num/m;
int yy=num%m; for(int i=;i<;i++)
{
int newx=xx+dirx[i];
int newy=yy+diry[i];
if(newx==edx&&newy==edy&&vist[newx][newy]==)
return ;
if(judge(newx,newy)&&vist[newx][newy]>)
{
q.push(newx*m+newy);
vist[newx][newy]--;
}
}
}
//printf("==\n");
return ; }
int main()
{
scanf("%d %d",&n,&m);
for(int i=;i<n;i++)
scanf("%s",str[i]);
scanf("%d %d",&stx,&sty);
scanf("%d %d",&edx,&edy);
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
if(str[i][j]=='X')
vist[i][j]=;
else
vist[i][j]=;
}
}
if(bfs())
printf("YES\n");
else
printf("NO\n");
return ;
}
最新文章
- Android:Activity+Fragment及它们之间的数据交换.
- 解析大型.NET ERP系统架构设计 Framework+ Application 设计模式
- [moka同学摘录]SQL内联、外联的简单理解
- Redis学习笔记~实现消息队列比MSMQ更方便
- android-时间选择器和日期选择器
- js验证函数摘录
- hdu1269 强连通
- android loadlibrary 更改libPath 路径,指定路径加载.so
- Request对象 --web浏览器向web服务端的请求
- 【集美大学1411_助教博客】团队作业6——展示博客(Alpha版本)
- Oracle之 11gR2 RAC 修改监听器端口号的步骤
- [SDOI2015]星际战争
- C# 10分钟完成百度人脸识别——入门篇
- [原]CentOS7安装Rancher2.1并部署kubernetes (三)---解决登录kubernets超时和部署测试Pod和Containter[nginx为例]
- OC学习笔记
- Eigen子矩阵操作
- Codeforces gym101612 E.Equal Numbers(贪心)
- 【文件】使用word的xml模板生成.doc文件
- 命名空间与Autoload
- [转]MySQL DBA面试全揭秘