T84341 Jelly的难题1

题解

当窝发现窝的锅在读入这个矩阵的时候,窝。。窝。。窝。。

果然,一遇到和字符串有关的题就开始吹空调

好啦我们说说思路吧

BFS队列实现

拿出一个没有走过的点,扩展它可以达到的节点,那么它可以到达的节点的到达时间就等于它父节点到达时间+1

代码

#include<bits/stdc++.h>

using namespace std;

const int mod=;
int n,m,sx,sy,t;
long long much;
char ju[][];
int vis[][];
int dis[][]; int dx[]={-,,,};
int dy[]={,-,,}; struct node
{
int x,y;
}; queue<node>q; int main()
{
scanf("%d%d\n",&n,&m);
memset(vis,-,sizeof(vis));
memset(dis,,sizeof(dis)); for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
cin>>ju[i][j]; //我的锅就在这里QWQ if(ju[i][j]=='*')
{
sx=i;sy=j;
vis[i][j]=;
}
if(ju[i][j]=='o')
vis[i][j]=;
if(ju[i][j]=='#')
vis[i][j]=;
} node h;
h.x =sx;h.y =sy;
q.push(h); while(!q.empty())
{ node now=q.front();
q.pop();
t=max(t,dis[now.x][now.y]); for(int i=;i<=;i++)
{
int xx=now.x +dx[i];
int yy=now.y +dy[i];
if(vis[xx][yy]==)
{
dis[xx][yy]=dis[now.x ][now.y ]+;
vis[xx][yy]=;
node h;
h.x =xx;
h.y =yy;
q.push(h);
}
}
} for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
if(dis[i][j]!=)
{
dis[i][j]=t-dis[i][j]+;
much=(much%mod+dis[i][j]%mod)%mod;
} } printf("%d\n",t);
printf("%ld\n",much); return ;
}

最新文章

  1. mysql小结
  2. WPF仿Win7便笺
  3. 项目管理知识框架PMBOK(文字版)
  4. 2. xargs 命令
  5. HTTPD服务 openssl的https服务机制
  6. viewport的一些事
  7. C#局域网桌面共享软件制作(一)
  8. CUDA ---- Hello World From GPU
  9. 大数据量查询优化——数据库设计、SQL语句、JAVA编码
  10. AngularJs(五)从Controller控制器谈谈$scope作用域
  11. leetcode Valid Sudoku python
  12. 高焕堂《android从程序员到架构师之路》 YY讲坛直面大师学习架构设计
  13. (译文)Python中的staticmethod与classmethod
  14. 标准Http协议的六种请求方法详解
  15. 跨平台原生AR/VR应用研发引擎-NVisionXR开放内测
  16. Replica Set + sharding搭建mongodb集群
  17. 兼容的获取样式的函数getStyle()
  18. Go pprof性能监控
  19. 一种简单的生产环境部署Node.js程序方法
  20. python系统编程(二)

热门文章

  1. TypeScript如何添加自定义d.ts文件(转)
  2. Linux硬件访问技术
  3. vim简明教程--半小时从入门到精通
  4. Centos 7 Samba服务安装
  5. 北美CS求学找工指南
  6. jenkins之Extended Choice Parameter多选插件
  7. CF1111E Tree 动态规划+LCT
  8. poj3728 The merchant[倍增]
  9. Notepad++设置快捷键及外部命令
  10. static成员变量