当前位置: 首页 > news >正文

伴奏在线制作网站/天津seo优化排名

伴奏在线制作网站,天津seo优化排名,wordpress home_url,微山县建设局官方网站Description 为了便于牛们欣赏和锻炼&#xff0c;农夫JOHN在他的农场上新添加了一个美丽的池塘。 JOHN的池塘是一个长方形&#xff0c;他已经把它划分成了M行N列的小正方行 (1 < M < 30; 1 < N < 30). 某些正方行里是石头&#xff0c;另外一些则是特别结实的荷叶&…

Description

为了便于牛们欣赏和锻炼,农夫JOHN在他的农场上新添加了一个美丽的池塘。 JOHN的池塘是一个长方形,他已经把它划分成了M行N列的小正方行 (1 <= M <= 30; 1 <= N <= 30). 某些正方行里是石头,另外一些则是特别结实的荷叶,其余则只有清水。 为了锻炼,Bessie想从一片荷叶跳到另外一片。她的每一次跳跃都是一个象棋中的马步:两行一列或一行两列。 JOHN看到了Bessie并且发现有时Bessie没有办法达到她的目标荷叶。他准备添加一些荷叶来让Bessie完成她的目标。当然,荷叶不能放在石头上。 帮助JOHN找出他最少要放多少片荷叶和他一共有多少种放最少片荷叶的方案。

Input

第1行: 两个整数, M 和 N。

第2~M+1行: 第i+1包含N个数,分别为第i行的N个格子的情况。 0表示格子为空,1表示有一片荷叶,2表示格子里有石头,3表示此格子是Bessie的起点,4 表示此格子是Bessie的目标。

Output

第1行: 一个数,最少情况下需要添加的荷叶数目。如果没有方案存在,输出- 1。

第2行: 一个数,达到最小值的方案总数。这个数保证不超过内设64位整数(long long/ int64)的大小。如果第一行是-1,不要输出此行。

Sample Input

4 5

1 0 0 0 0

3 0 0 0 0

0 0 2 0 0

0 0 0 4 0

输入解释:

池塘含4行5列。Bessie在第2行第1列并且想跳到第4行第4列。池塘里有1块

石头和3片荷叶。

Sample Output

2

3

输出解释:

至少需要2片荷叶。一共有三种摆法:

第4行第2列,第2行第3列第1行第3列,第3行第2列第1行第3列,第2行第5列R1C2,R2C3     R1C3,R3C2     R1C3,R2C51 0 0 0 0     1 0 X 0 0     1 0 X 0 03 0 X 0 0     3 0 0 0 0     3 0 0 0 X0 0 2 0 0     0 X 2 0 0     0 0 2 0 00 X 0 4 0     0 0 0 4 0     0 0 0 4 0

题解
对于每个0号点,向8个方向搜索,搜到0号点则向其连一条代价为1的边,若搜到1号点,则继续搜索,直到找到0号点,连代价为1的边。这样对于第一问,直接求最短路,对于第二问,再求最短路时求最短路路径数即为方案数。

代码

#include<bits/stdc++.h>
#define inf 1000000
#define N 150005
#define M 1000005
#define ll long long
const int xx[8]={1,1,-1,-1,2,2,-2,-2},yy[8]={2,-2,2,-2,1,-1,1,-1};
using namespace std;
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
int tot,ret[M],Next[M],len[M],Head[N];
int n,m,a[55][55],S,T;
bool vis[55][55],flag[N];
ll ans[N];int dis[N];
struct node{int x,y;};
inline void ins(int u,int v,int l)
{ret[++tot]=v;len[tot]=l;Next[tot]=Head[u];Head[u]=tot;
}
int num(int x,int y){return (x-1)*m+y;}
void bfs(int s,int t)
{memset(vis,0,sizeof(vis));queue<node>q;q.push((node){s,t});vis[s][t]=1;while (!q.empty()){int nx=q.front().x,ny=q.front().y;q.pop();for (int i=0;i<8;i++){int x=nx+xx[i],y=ny+yy[i];if (x<1||x>n||y<1||y>m||a[x][y]==2||vis[x][y]) continue;vis[x][y]=1;if (a[x][y]==0) ins(num(s,t),num(x,y),1);if (a[x][y]==4) ins(num(s,t),num(x,y),0);if (a[x][y]==1) q.push((node){x,y});}}
}
void spfa()
{for (int i=1;i<=n*m;i++) dis[i]=inf;queue<int>q;q.push(S);dis[S]=0;flag[S]=1;ans[S]=1LL;while (!q.empty()){int now=q.front();q.pop();for (int i=Head[now];i;i=Next[i]){if (dis[ret[i]]>dis[now]+len[i]){dis[ret[i]]=dis[now]+len[i];ans[ret[i]]=ans[now];if (!flag[ret[i]])flag[ret[i]]=1,q.push(ret[i]);}else if (dis[ret[i]]==dis[now]+len[i]){ans[ret[i]]+=ans[now];if (!flag[ret[i]])flag[ret[i]]=1,q.push(ret[i]);}}flag[now]=0;}
}
int main()
{n=read();m=read();for (int i=1;i<=n;i++)for (int j=1;j<=m;j++){a[i][j]=read();if (a[i][j]==3) S=num(i,j);if (a[i][j]==4) T=num(i,j);}for (int i=1;i<=n;i++)for (int j=1;j<=m;j++)if (a[i][j]==0||a[i][j]==3) bfs(i,j);spfa();if (dis[T]==inf) return puts("-1"),0;printf("%d\n%lld",dis[T],ans[T]);return 0;
}
http://www.jmfq.cn/news/4895533.html

相关文章:

  • 宣传广告牌图片/官网关键词优化价格
  • 上海装修公司网站建设/橘子seo查询
  • 重庆找工作哪个网站好/巨量关键词搜索查询
  • wordpress 扫描工具/上海aso优化公司
  • 电子商务网站建设计划书/建网站建设
  • 网站前置审批怎么做/网络营销推广合作
  • 众筹网站建设/关键词歌词打印
  • 西部网站管理助手/百度认证证书
  • 网站中怎么插入flash/sem广告投放是做什么的
  • 做货代哪个网站上好找客户/百度一下 你知道首页
  • 注册门户网站/网站优化排名软件
  • 深圳 旅游 网站建设/网络营销收获与体会
  • 做企业展示版网站贵吗/做百度关键词排名的公司
  • 做网站域名后缀选择/电商平台运营方案思路
  • 做网络私活的网站/核心关键词如何优化
  • 如何写代码做网站/营业推广方案
  • 网站建设合同标准版/站长之家音效
  • 整站seo哪家服务好/推广平台 赚佣金
  • 做程序开发的网站/百度seo学院
  • html5购物网站模板/搭建网站工具
  • 台州做网站是什么/关于seo如何优化
  • 做职业规划的网站/免费获客软件
  • 郑州网站南京网站建设/免费建站网站大全
  • 织梦网站模板免费/品牌宣传方式
  • 深圳龙岗区最新疫情最新消息/seo技术代理
  • 传奇版本网页游戏/seo门户网站优化
  • 手机网站如何做才能兼容性各种手机/google 推广优化
  • 美食网站代做/长尾关键词挖掘站长工具
  • 工程项目管理软件app/苏州seo网络推广
  • 网站关键字优化公司/专业网站快速