直接bfs,在过程中更新方案数即可

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
const int N=55,inf=1e9,dx[]={1,1,-1,-1,2,2,-2,-2},dy[]={2,-2,2,-2,1,-1,1,-1};
int n,m,a[N][N],b[N][N],dis[N][N];
long long f[N][N];
bool v[N][N];
struct qwe
{int x,y;qwe(int X=0,int Y=0){x=X,y=Y;}
}s,t;
queue<qwe>q;
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);b[i][j]=dis[i][j]=inf;if(a[i][j]==3)s=qwe(i,j);if(a[i][j]==4)t=qwe(i,j);}q.push(s);v[s.x][s.y]=1;b[s.x][s.y]=dis[s.x][s.y]=0;f[s.x][s.y]=1;while(!q.empty()){qwe u=q.front();q.pop();v[u.x][u.y]=0;for(int k=0;k<8;k++){int x=u.x+dx[k],y=u.y+dy[k];if(x<1||y<1||x>n||y>m||a[x][y]==2)continue;int nw=b[u.x][u.y]+(a[x][y]==0);if(nw<b[x][y]){b[x][y]=nw;dis[x][y]=dis[u.x][u.y]+1;f[x][y]=f[u.x][u.y];if(!v[x][y]){v[x][y]=1;q.push(qwe(x,y));}}else if(nw==b[x][y]){if(dis[u.x][u.y]+1<dis[x][y]){dis[x][y]=dis[u.x][u.y]+1;f[x][y]=f[u.x][u.y];if(!v[x][y]){v[x][y]=1;q.push(qwe(x,y));}}else if(dis[u.x][u.y]+1==dis[x][y]){f[x][y]+=f[u.x][u.y];if(!v[x][y]){v[x][y]=1;q.push(qwe(x,y));}}}}}if(b[t.x][t.y]==inf)puts("-1");else printf("%d\n%d\n%lld\n",b[t.x][t.y],dis[t.x][t.y],f[t.x][t.y]);return 0;
}

转载于:https://www.cnblogs.com/lokiii/p/9570655.html

bzoj 1632: [Usaco2007 Feb]Lilypad Pond【bfs】相关推荐

  1. bzoj 1632: [Usaco2007 Feb]Lilypad Pond(BFS)

    1632: [Usaco2007 Feb]Lilypad Pond Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 688  Solved: 230 [S ...

  2. bzoj 1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘(BFS)

    1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 550  Solved: 1 ...

  3. Problem : [usaco2007 Feb]Lilypad Pond

    Problem : [usaco2007 Feb]Lilypad Pond Description Farmer John 建造了一个美丽的池塘,用于让他的牛们审美和锻炼. 这个长方形的池子被分割成了 ...

  4. BZOJ 1631: [Usaco2007 Feb]Cow Party【最短路】

    1631: [Usaco2007 Feb]Cow Party [题目描述] 传送门 题解 正向建边,从X开始刷一趟SPFA,然后反向建边,从X刷一趟SPFA,最后两次的答案加和就可以了. 代码如下 # ...

  5. 【BFS】魔板(c++基础算法)

    本专栏上一篇:[BFS]八数码问题(c++基础算法) 目录 一.读题 ①题面 ②题意 三.做题 ①算法原理 ②算法实现 Ⅰ三种基本操作 Ⅱ操作序列 Ⅲ输出 Ⅳ一个特殊情况 四.AC代码 最后 一.读题 ...

  6. POJ 3414 Pots【BFS】+ Python

    原题链接: 3414 -- Pots 参考资料:POJ 3414 - Pots | 眈眈探求 POJ 3414 Pots[BFS][图搜] - it610.com 一 特别注意: 1. 每一种操作对应 ...

  7. bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍

    1696: [Usaco2007 Feb]Building A New Barn新牛舍 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 481  Solv ...

  8. bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序(置换)

    1697: [Usaco2007 Feb]Cow Sorting牛排序 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 706  Solved: 413 ...

  9. poj 3268 bzoj 1631: [Usaco2007 Feb]Cow Party(最短路)

    1631: [Usaco2007 Feb]Cow Party Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 855  Solved: 613 [Subm ...

最新文章

  1. 动作分析 姿态估计_关于大片人物特效少不了的人体姿态估计,这里有一份综述文章...
  2. HTTP协议之post multipart/form-data数据类型实例
  3. Docker环境运行Vue项目
  4. java中输入char类型_java中如何输入char类型
  5. 不得了了!Python 又爆出重大 Bug!
  6. 工作中的小技巧(一)
  7. labview 远程连接linux,SSH交互式通信总结:expect、plink、putty、sshpass、ALAB SSH
  8. C# 3.0入门系列(三)
  9. Node.js HTTP
  10. 那些年使用Android studio遇到的问题
  11. 程序员如何写好技术文档?建议收藏
  12. oracle数据库表的一些基本处理
  13. docker镜像 私有创库、端口映射以及 数据卷的创建
  14. 教程-ftp21端口,OpenSSH,22,内部敏感服务对外开放存在风险
  15. 北京汉正天成科技有限公司大家听说过没?这家公司怎么样?
  16. 一寸光阴一寸金,寸金难买寸光阴、时间就是生命,浪费时间就是慢性自杀。
  17. 电脑重装系统蓝屏详细解决方法分享
  18. Unity3D灯光与渲染学习之(一):天空盒、灯光以及色彩空间
  19. 塑料壳上下扣合的卡扣设计_读书笔记-塑胶外壳卡扣设计
  20. 在线支付功能-含银联在线和支付宝

热门文章

  1. Libvirsh 问题:GLib-WARNING **: gmem.c:483: custom memory allocation vtable not supported
  2. 同一个局域网,不同网段的远程控制
  3. XP系统和Sever2003系统现实定时开关机
  4. 《自己动手写开发工具》试读版电子书及光盘
  5. Cambridge center for digital innovation at judge business school
  6. 比较简单的在线图像编辑软件:觉得还行
  7. ubuntu下远程控制LinuxWindow桌面
  8. 数据结构【图】—022邻接矩阵的深度和广度遍历
  9. 代码创建 WPF 旋转动画
  10. MongoDB Hot Backup 测试及痛点