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