codeforces 793B. Igor and his way to work
B. Igor and his way to work
3 seconds
256 megabytes
standard input
standard output
Woken up by the alarm clock Igor the financial analyst hurried up to the work. He ate his breakfast and sat in his car. Sadly, when he opened his GPS navigator, he found that some of the roads in Bankopolis, the city where he lives, are closed due to road works. Moreover, Igor has some problems with the steering wheel, so he can make no more than two turns on his way to his office in bank.
Bankopolis looks like a grid of n rows and m columns. Igor should find a way from his home to the bank that has no more than two turns and doesn't contain cells with road works, or determine that it is impossible and he should work from home. A turn is a change in movement direction. Igor's car can only move to the left, to the right, upwards and downwards. Initially Igor can choose any direction. Igor is still sleepy, so you should help him.
The first line contains two integers n and m (1 ≤ n, m ≤ 1000) — the number of rows and the number of columns in the grid.
Each of the next n lines contains m characters denoting the corresponding row of the grid. The following characters can occur:
- "." — an empty cell;
- "*" — a cell with road works;
- "S" — the cell where Igor's home is located;
- "T" — the cell where Igor's office is located.
It is guaranteed that "S" and "T" appear exactly once each.
In the only line print "YES" if there is a path between Igor's home and Igor's office with no more than two turns, and "NO" otherwise.
5 5
..S..
****.
T....
****.
.....
YES
5 5
S....
****.
.....
.****
..T..
#include<bits/stdc++.h>
using namespace std; const int Max = ;
char f[Max][Max];
int d[Max][Max];
int m,n; int fuck(int x,int y,int v)
{
int i=x+;int j=y;
while(i<m&&d[i][j]==-&&f[i][j]!='*') d[i++][j]=v;
i=x-;j=y;
while(i>=&&d[i][j]==-&&f[i][j]!='*') d[i--][j]=v;
i=x;j=y+;
while(j<n&&d[i][j]==-&&f[i][j]!='*') d[i][j++]=v;
i=x;j=y-;
while(j>=&&d[i][j]==-&&f[i][j]!='*') d[i][j--]=v;
} int main()
{
ios_base::sync_with_stdio();
int i,j;
cin>>m>>n;
memset(d, -, Max*Max*sizeof(int));
for(i=;i<m;i++) for(j=;j<n;j++) cin>>f[i][j];
for(i=;i<m;i++) for(j=;j<n;j++) if(f[i][j]=='S'){
d[i][j]=;
//cout<<i<<j;
fuck(i,j,);
}
for(i=;i<m;i++) for(j=;j<n;j++) if(d[i][j]==){
fuck(i,j,);}
for(i=;i<m;i++) for(j=;j<n;j++) if(d[i][j]==){
fuck(i,j,);}
for(i=;i<m;i++) for(j=;j<n;j++) if(f[i][j]=='T'){
cout<<(d[i][j]==-?"NO":"YES");}
return ;
}
codeforces 793B. Igor and his way to work的更多相关文章
- codeforces 793B - Igor and his way to work(dfs、bfs)
题目链接:http://codeforces.com/problemset/problem/793/B 题目大意:告诉你起点和终点,要求你在只能转弯两次的情况下能不能到达终点.能就输出“YES”,不能 ...
- 【codeforces 793B】Igor and his way to work
[题目链接]:http://codeforces.com/contest/793/problem/B [题意] 给一个n*m大小的方格; 有一些方格可以走,一些不能走; 然后问你从起点到终点,能不能在 ...
- codeforces 598D Igor In the Museum
题目链接:http://codeforces.com/problemset/problem/598/D 题目分类:dfs 题目分析:处理的时候一次处理一片而不是一个,不然会超时 代码: #includ ...
- Codeforces 747F Igor and Interesting Numbers DP 组合数
题意:给你一个数n和t,问字母出现次数不超过t,第n小的16进制数是多少. 思路:容易联想到数位DP, 然而并不是...我们需要知道有多少位,在知道有多少位之后,用试填法找出答案.我们设dp[i][j ...
- Educational Codeforces Round 1 D. Igor In the Museum bfs 并查集
D. Igor In the Museum Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/598 ...
- Educational Codeforces Round 1(D. Igor In the Museum) (BFS+离线访问)
题目链接:http://codeforces.com/problemset/problem/598/D 题意是 给你一张行为n宽为m的图 k个询问点 ,求每个寻问点所在的封闭的一个上下左右连接的块所能 ...
- 【CodeForces - 598D】Igor In the Museum(bfs)
Igor In the Museum Descriptions 给你一个n*m的方格图表示一个博物馆的分布图.每个方格上用'*'表示墙,用'.'表示空位.每一个空格和相邻的墙之间都有一幅画.(相邻指的 ...
- Codeforces 598D:Igor In the Museum
D. Igor In the Museum time limit per test 1 second memory limit per test 256 megabytes input standar ...
- [BFS]Codeforces Igor In the Museum
Igor In the Museum time limit per test 1 second memory limit per test 256 megabytes input standard ...
随机推荐
- ssl协议
在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 1.首先解释一下上面的几个名词: https:在http(超文本传输协 ...
- CF915G Coprime Arrays 莫比乌斯反演、差分、前缀和
传送门 差分是真心人类智慧--完全不会 这么经典的式子肯定考虑莫比乌斯反演,不难得到\(b_k = \sum\limits_{i=1}^k \mu(i) \lfloor\frac{k}{i} \rfl ...
- python3 installed 安装 pip3
curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3
- 通过C# WinForm控件创建的WPF WIndow窗口控件无法输入的问题
原文:通过WinForm控件创建的WPF 控件无法输入的问题 今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在 ...
- 2018年计划小里程碑(6月)PMI-ACP 敏捷
年初定的计划之一,考证... 7A,意料之外,也是意料之中.历时两个月多,2018.3.31号决定报名,顶着压报了ACP+ACP实战+PMP,考虑了下敏捷是未来项目管理的趋势,大部分公司正在向敏捷转型 ...
- ProxySQL实现Mysql读写分离 - 部署手册
ProxySQL是一个高性能的MySQL中间件,拥有强大的规则引擎.ProxySQL是用C++语言开发的,也是percona推的一款中间件,虽然也是一个轻量级产品,但性能很好(据测试,能处理千亿级的数 ...
- 分布式监控系统Zabbix-3.0.3-完整安装记录(3)-监控nginx,php,memcache,Low-level discovery磁盘IO
前段时间在公司IDC服务器上部署了zabbix3.0.3监控系统,除了自带的内存/带宽/CPU负载等系统资源监控模板以及mysql监控模板外,接下来对诸如nginx.php.memcache.磁盘IO ...
- Python 可调用对象
除了用户定义的函数,调用运算符(即 ())还可以应用到其他对象上.如果想判断对象能否调用,可以使用内置的 callable() 函数.Python 数据模型文档列出了 7 种可调用对象.(1)用户定义 ...
- C_数据结构_递归A函数调用B函数
# include <stdio.h> int g(int); int f(int); int f(int n) { ) printf("haha\n"); else ...
- A. Vasya and Chocolate
链接 [http://codeforces.com/contest/1065/problem/A] 分析 一个公式完事 代码 #include<bits/stdc++.h> using n ...