小蝌蚪找妈妈 牛客
时间:2019-09-02
本文章向大家介绍小蝌蚪找妈妈 牛客,主要包括小蝌蚪找妈妈 牛客使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
链接:https://ac.nowcoder.com/acm/problem/14663
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
青蛙妈妈最近很不放心把蝌蚪宝宝送到幼儿园,但当她买菜回家时,却发现可爱的孩子小蝌蚪走丢了。
小池塘里有很多石头,青蛙家在其中标号为s的石头上。小蝌蚪会移动k分钟,每分钟会出现在任意石头旁边,甚至多次出现在一块石头旁边。但k分钟之后,蝌蚪宝宝就游不动了。
青蛙妈妈第0秒从家所在的石头出发,每分钟移动一次,可以留在原地,也可以跳跃到一块当前可跳跃到的石头上(只能在特定的石头间双向跳跃)。
小池塘里有很多石头,青蛙家在其中标号为s的石头上。小蝌蚪会移动k分钟,每分钟会出现在任意石头旁边,甚至多次出现在一块石头旁边。但k分钟之后,蝌蚪宝宝就游不动了。
青蛙妈妈第0秒从家所在的石头出发,每分钟移动一次,可以留在原地,也可以跳跃到一块当前可跳跃到的石头上(只能在特定的石头间双向跳跃)。
输入描述:
多组数据。
第一行输入石头个数n,青蛙妈妈可以跳跃的石头对数m,蝌蚪宝宝的活动时间k,青蛙家所在的石头s。
之后输入k个数,其中第i个数代表第i分钟蝌蚪宝宝的位置,编号从i=1开始。
接下来输入m行,每行包括两个数u,v,表示青蛙妈妈可以在第u个和第v个石头间双向跳跃。
输出描述:
请输出青蛙妈妈最少几分钟发现蝌蚪宝宝。
备注:
1≤n≤100000,
1≤m≤2∗n,
1≤k≤100000,
1≤s≤n,
1≤u,v≤n,
无重边,无自环,保证联通,
数据不多于10组
分析::
求出青蛙起点到任一点的最短时间,再与青蛙在该地的时刻进行比较,更新最小值
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 const int maxn=1e5+5; 5 int mb[maxn]; 6 int dis[maxn]; 7 int n,m,k,s; 8 vector<int>v[maxn]; 9 queue<int>que; 10 int main() 11 { 12 while(~scanf("%d",&n)) 13 { 14 scanf("%d%d%d",&m,&k,&s); 15 for(int i=1;i<=k;i++){ 16 scanf("%d",&mb[i]); 17 } 18 for(int i=0;i<=n;i++){ 19 dis[i]=0; 20 v[i].clear(); 21 } 22 for(int i=1;i<=m;i++){ 23 int a,b; 24 scanf("%d%d",&a,&b);//邻接表记录 25 v[a].push_back(b); 26 v[b].push_back(a); 27 } 28 que.push(s); 29 while(!que.empty()) 30 { 31 int t=que.front(); 32 que.pop(); 33 for(int i=0;i<v[t].size();i++) 34 { 35 if(dis[v[t][i]]==0&&v[t][i]!=s){//最先达到一定时间最短,且不能为起点,起点一秒的时候最短 36 dis[v[t][i]]=dis[t]+1; 37 que.push(v[t][i]); 38 } 39 } 40 } 41 int Min=1e9+77; 42 for(int i=1;i<=k;i++) 43 { 44 if(dis[mb[i]]<=i){//如果可以在i时刻或之前到更新最短时间,因为可以选择不动 45 if(i<Min){Min=i;} 46 } 47 } 48 if(Min==1e9+77)Min=dis[mb[k]];//当k时刻内都未找到,那麽直接输出到达最后点的时间 49 printf("%d\n",Min); 50 } 51 return 0; 52 }
原文地址:https://www.cnblogs.com/sj-gank/p/11449164.html
- [WCF安全系列]通过绑定元素看各种绑定对消息保护的实现
- 通过添加HTTP Header实现上下文数据在WCF的自动传递
- 模拟在WCF中的应用
- [WCF权限控制]通过扩展自行实现服务授权[提供源码下载]
- [WCF权限控制]WCF自定义授权体系详解[原理篇]
- [WCF权限控制]WCF自定义授权体系详解[原理篇]
- [WCF权限控制]WCF自定义授权体系详解[实例篇]
- [ASP.NET MVC]通过对HtmlHelper扩展简化“列表控件”的绑定
- [ASP.NET MVC]为HtmlHelper添加一个RadioButtonList扩展方法
- 在ASP.NET MVC中使用“RadioButtonList”和“CheckBoxList”
- [WCF REST] 一个简单的REST服务实例
- [WCF REST] 提高性能的一个有效的手段:条件资源获取(Conditional Retrieval)
- [WCF REST] 解决资源并发修改的一个有效的手段:条件更新(Conditional Update)
- [WCF REST] 通过ASP.NET Output Caching实现声明式缓存
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android自定义View实现自动吸附功能
- Qt音视频开发35-Onvif图片参数
- alpine安装openssl
- iOS14中的PHPicker
- Android 如何实现动态申请权限
- Android录屏的三种解决方案
- Android 实现将Bitmap 保存到本地
- Android Gradle依赖管理、去除重复依赖、忽略的方式
- Andriod Studio实现保存QQ密码功能(案例代码详解)
- Android Studio编写微信页面提交功能
- android 实现按钮浮动在键盘上方的实例代码
- 创建Android守护进程实例(底层服务)
- android studio xml文件实现添加注释
- 解决Android studio xml界面无法预览问题
- Android Studio通过Artifactory搭建本地仓库优化编译速度的方法