牛客网挑战赛24 青蛙(BFS)
链接:https://www.nowcoder.com/acm/contest/157/E
来源:牛客网
有一只可爱的老青蛙,在路的另一端发现了一个黑的东西,想过去一探究竟。于是便开始踏上了旅途 一直这个小路上有很多的隧道,从隧道的a进入,会从b出来,但是隧道不可以反向走。 这只青蛙因为太老了,所以很懒,现在想请你帮帮慢,问他最少需要几步才可以到达对面。 将小径看作一条数轴,青蛙初始在0上,这只青蛙可以向前跳也可以向后跳,但每次只能跳一格,每跳一格记作一步,从隧道进到隧道出算做一步。
输入描述:
第一行两个数m,n;表示黑色物品在数轴m点上,数轴上总共有n个隧道接下来n行,每行a,b两个数,表示从a进会从b出10 <= m,n <= 2330<a,b<=m
输出描述:
- 一个数ans表示最小步数
输入
16 4
2 10
8 15
12 5
13 6
输出
7- 提示:
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- #define mod 1000000007
- #define INF 0x3f3f3f3f
- const int N=;
- int n,m;
- vector<int>s[N];
- int ans=INF;
- int vis[N][N];
- int d[N];
- struct niu
- {
- int x;
- int step;
- niu(){}
- niu(int xt,int st)
- {
- x=xt,step=st;
- }
- };
- queue<niu>q;
- bool check(int a){return <a&&a<=n;}//注意这里不能写成0<a<=n;
- void bfs()
- {
- while(q.size())q.pop();
- memset(vis,,sizeof(vis));
- q.push(niu(,));
- vis[][]=;
- while(q.size())
- {
- niu tmp=q.front();
- q.pop();
- if(tmp.x==n){
- ans=min(ans,tmp.step);
- return ;
- }
- for(int nx: s[tmp.x])
- {
- if(check(nx)&&vis[nx][tmp.step]==)
- {
- vis[nx][tmp.step]=;
- q.push(niu(nx,tmp.step+));
- }
- }
- int ny=tmp.x+;
- if(check(ny)&&vis[ny][tmp.step]==)
- {
- vis[ny][tmp.step]=;
- q.push(niu(ny,tmp.step+));
- }
- int nz=tmp.x-;
- if(check(nz)&&vis[nz][tmp.step]==)
- {
- vis[nz][tmp.step]=;
- q.push(niu(nz,tmp.step+));
- }
- }
- }
- int main()
- {;
- ios_base::sync_with_stdio(); cin.tie();
- cin>>n>>m;
- int a,b;
- for(int i=;i<m;i++)
- {
- cin>>a>>b;
- s[a].push_back(b);
- }
- /* for(int i=0;i<=n;i++)
- for(int j: s[i])
- cout<<j<<endl;*/
- bfs();
- cout<<ans<<endl;
- return ;
- }
这道题也可以用最短路floyed算法做(这种做法我又犯了一个错误,n,m定义全局变量后,又在下面定义成局部变量,这使得调用floyed函数时出错)
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- #define mod 1000000007
- #define INF 0x3f3f3f3f
- const int N=;
- int n,m;
- int d[N][N];
- void floyed()
- {
- for(int k=;k<=n;k++)
- for(int i=;i<=n;i++)
- for(int j=;j<=n;j++)
- d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
- }
- int main()
- { //这里不能在定义一次n,m
- ios_base::sync_with_stdio();
- cin.tie();
- cin>>n>>m;
- memset(d,INF,sizeof(d));
- for(int i=;i<m;i++)
- {
- int a,b;
- cin>>a>>b;
- d[a][b]=;
- }
- for(int i=;i<=n;i++)
- {
- d[i][i-]=;
- d[i-][i]=;
- d[i][i]=;
- }
- floyed();
- cout<<d[][n]<<endl;
- return ;
- }
牛客网挑战赛24 青蛙(BFS)的更多相关文章
- 牛客网挑战赛19 B,C,F
链接:https://www.nowcoder.com/acm/contest/131/B来源:牛客网 矩阵 M 包含 R 行 C 列,第 i 行第 j 列的值为 Mi,j. 请寻找一个子矩阵,使得这 ...
- 牛客网 Wannafly挑战赛8 A.小Y和小B睡觉觉
写了一会不想写了... A-小Y和小B睡觉觉 链接:https://www.nowcoder.com/acm/contest/57/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制: ...
- 牛客网 Wannafly挑战赛9 C.列一列-sscanf()函数
C.列一列 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld 链接:https://www.now ...
- 牛客网Wannafly挑战赛25A 因子(数论 素因子分解)
链接:https://www.nowcoder.com/acm/contest/197/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 题解——牛客网Wannafly挑战赛23 B-游戏 (SG函数)
前言 比赛的时候没学过SG函数的蒟蒻以为是道结论题,但是不是QwQ 和dummyummy巨佬一起推了快三个小时的规律 最后去问了真正的巨佬__stdcall __stdcall面带微笑的告诉我们,这是 ...
- 牛客网 江西财经大学第二届程序设计竞赛同步赛 D.绕圈游戏-(跳青蛙游戏)找数的所有因子就可以了
链接:https://ac.nowcoder.com/acm/contest/635/D来源:牛客网 D.绕圈游戏 433为了帮ddd提升智商,决定陪他van特殊的游戏.433给定一个带有n个点的环, ...
- 牛客网 Wannafly挑战赛27 蓝魔法师
蓝魔法师 链接: https://www.nowcoder.com/acm/contest/215/C 来源:牛客网 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔 ...
- 牛客网 Wannafly挑战赛8 B.LBJX的三角形
B-LBJX的三角形 链接:https://www.nowcoder.com/acm/contest/57/B来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K, ...
- 牛客网 Wannafly挑战赛11 B.白兔的式子-组合数阶乘逆元快速幂
链接:https://www.nowcoder.com/acm/contest/73/B来源:牛客网 B.白兔的式子 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K, ...
随机推荐
- parse_str()和http_build_query()的使用
<?php $_html = array(); $_html['action1'] = 'action1'; $_html['action2'] = 'action2'; echo http_b ...
- python 类的私有属性和方法 (转载)
转载:http://www.runoob.com/python/python-object.html 类属性与方法 类的私有属性 __private_attrs:两个下划线开头,声明该属性为私有,不能 ...
- React(7) --react父子组件传参
react父子组件传参 父级向子级传参:在父组件中,我们引入子组件,通过给子组件添加属性,来起到传参的作用,子组件可以通过props获取父组件传过来的参数. 在父组件中: import React f ...
- 初学Java 数值运算符
import java.util.Scanner; public class DisplayTime { public static void main(String[] args) { Scanne ...
- 《x的奇幻之旅》:有趣的数学科普
本书是相对比较少见的数学方面的科普书.从最简单的阿拉伯数字.加减法,一直到概率统计.微积分.群论.拓扑.微分几何,每个主题都用几千字做一些深入浅出的介绍.写的相当的有趣. 在书中又一次看到这个有趣的事 ...
- vue-如何输出Hello world
首先引入vue.js文件 <script src="vue.js"></script> <!DOCTYPE html> <html> ...
- mongodb 多表关联处理 : 内嵌以及连接(手动引用、DBref) 、aggregate中$lookup
MongoDB与关系型数据库的建模还是有许多不同,因为MongoDB支持内嵌对象和数组类型.MongoDB建模有两种方式,一种是内嵌(Embed),另一种是连接(Link).那么何时Embed何时Li ...
- ERROR=(CODE=1153)
jdbc 连接oracle数据库(10.2.0.4),应用程序报错如下: Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=169870592)(ERR ...
- 【学习笔记】圆方树(CF487E Tourists)
终于学了圆方树啦~\(≧▽≦)/~ 感谢y_immortal学长的博客和帮助 把他的博客挂在这里~ 点我传送到巨佬的博客QwQ! 首先我们来介绍一下圆方树能干什么呢qwq 1.将图上问题简化到树上问题 ...
- IOC(控制反转)和DI(依赖注入)
IOC(控制反转): 那么IoC是如何做的呢?有点像通过婚介找女朋友,在我和女朋友之间引入了一个第三者:婚姻介绍所.婚介管理了很多男男女女的资料,我可以向婚介提出一个列表,告诉它我想找个什么样的女朋友 ...