博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P2083 找人
阅读量:4576 次
发布时间:2019-06-08

本文共 1305 字,大约阅读时间需要 4 分钟。

题目背景

题目描述

小明要到他的同学家玩,可他只知道他住在某一单元,却不知住在哪个房间。那个单元有N层(1,2……N),每层有M(1,2……M)个房间。

小明会从第一层的某个房间开始找,他找的方式也很特别,每次到了一个房间,如果不是他的同学,他就会询问这人,

然后他就会去那人告诉他的房间号,如果还不是,他就会继续按这个方法找下去,直到找到。当然,他也有可能找不到同学。他的体力也是有限的,他每爬一层楼梯就会消耗V体力值。你的任务就是求找到同学耗费的最少体力值,如果找不到,就输出impossible 。

输入输出格式

输入格式:

 

共N+1行。

第一行,N,M,V,X,Y(X,Y表示同学只在X层Y房间)

2~N+1行,每行M*2个数字,第i+1行j*2-1个数Ak和j*2个数Ak+1表示住在i层j房间的人提供的信息是Ak层和Ak+1房间。(同学的信息就是自己的房间号)

 

输出格式:

 

一个数,即答案。

 

输入输出样例

输入样例#1: 
3 3 2 2 31 3 3 3 2 12 3 1 1 2 31 1 1 2 2 3
输出样例#1: 
2

说明

N<=1000,M<=100,V<=50

 

能理解,,想不到。

神奇。

搜索代码:

 

#include
#include
#include
#include
#include
using namespace std;const int maxn=1000000;int n,m,v,xx,yy,ans=maxn;struct node{ int x,y;}a[1002][1002];int dfs(int x,int y,int s,int sum){ if(x==xx&&y==yy) return s; if(sum>n*m) return maxn; dfs(a[x][y].x ,a[x][y].y ,s+abs(a[x][y].x -x),sum+1);}int main(){ scanf("%d%d%d%d%d",&n,&m,&v,&xx,&yy); for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) scanf("%d%d",&a[i][j].x ,&a[i][j].y ); for(int i=1;i<=m;++i) ans=min(ans,dfs(1,i,0,0)); if(ans==maxn) printf("impossible"); else printf("%d",ans*v); return 0; }

如果你不开心,那我就把右边这个帅傻子分享给你吧,  

你看,他这么好看,那么深情的望着你,你还伤心吗?  

真的!这照片盯上他五秒钟就想笑了。  

一切都会过去的。    

转载于:https://www.cnblogs.com/Mary-Sue/p/9683704.html

你可能感兴趣的文章
SelectQueryBuilder的用法
查看>>
android的用户定位(一)
查看>>
creat-react-app搭建的项目中按需引入antd以及配置Less和如何修改antd的主题色
查看>>
IIS安装
查看>>
html块级元素和行级元素的区别和使用
查看>>
for循环嵌套
查看>>
寒冬夜行人
查看>>
poj1151 Atlantis
查看>>
HTML页面之间的参数传递
查看>>
java面试题集锦
查看>>
scikit-learn:4.2.3. Text feature extraction
查看>>
Spring Security构建Rest服务-0800-Spring Security图片验证码
查看>>
AE待整理
查看>>
java8中规范的四大函数式接口
查看>>
宝塔apache配置
查看>>
shell脚本中使用nohup执行命令不生效
查看>>
PHP 文件上传七牛云
查看>>
ZT:Unity与C++之间进行socket通信
查看>>
Ural 1517. Freedom of Choice 后缀数组
查看>>
【转载】Maven入门实践
查看>>