网站运营目的化工企业网站模板
web/
2025/9/27 18:58:41/
文章来源:
网站运营目的,化工企业网站模板,网站项目开发流程,做数据ppt模板下载网站链接#xff1a;https://www.nowcoder.com/acm/contest/157/E来源#xff1a;牛客网 有一只可爱的老青蛙#xff0c;在路的另一端发现了一个黑的东西#xff0c;想过去一探究竟。于是便开始踏上了旅途 一直这个小路上有很多的隧道#xff0c;从隧道的a进入#xff0c;会从…链接https://www.nowcoder.com/acm/contest/157/E来源牛客网 有一只可爱的老青蛙在路的另一端发现了一个黑的东西想过去一探究竟。于是便开始踏上了旅途 一直这个小路上有很多的隧道从隧道的a进入会从b出来但是隧道不可以反向走。 这只青蛙因为太老了所以很懒现在想请你帮帮慢问他最少需要几步才可以到达对面。 将小径看作一条数轴青蛙初始在0上这只青蛙可以向前跳也可以向后跳但每次只能跳一格每跳一格记作一步从隧道进到隧道出算做一步。 输入描述:第一行两个数m,n表示黑色物品在数轴m点上数轴上总共有n个隧道接下来n行每行ab两个数表示从a进会从b出10 m,n 2330a,bm 输出描述: 一个数ans表示最小步数输入 16 4 2 10 8 15 12 5 13 6输出 7提示 0--1--2--10--9--8--15--16 题解一看题目我就想用BFS做但是最后却卡在了一个细节上就是在写check函数的时候0aan被我写成0an这个真的下次得注意了 代码 #includebits/stdc.h
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define mod 1000000007
#define INF 0x3f3f3f3f
const int N250;
int n,m;
vectorints[N];
int ansINF;
int vis[N][N];
int d[N];
struct niu
{int x;int step;niu(){}niu(int xt,int st){xxt,stepst;}
};
queueniuq;
bool check(int a){return 0aan;}//注意这里不能写成0an;
void bfs()
{while(q.size())q.pop();memset(vis,0,sizeof(vis));q.push(niu(0,0));vis[0][0]1;while(q.size()){niu tmpq.front();q.pop();if(tmp.xn){ansmin(ans,tmp.step);return ;}for(int nx: s[tmp.x]){if(check(nx)vis[nx][tmp.step]0){vis[nx][tmp.step]1;q.push(niu(nx,tmp.step1));}}int nytmp.x1;if(check(ny)vis[ny][tmp.step]0){vis[ny][tmp.step]1;q.push(niu(ny,tmp.step1));}int nztmp.x-1;if(check(nz)vis[nz][tmp.step]0){vis[nz][tmp.step]1;q.push(niu(nz,tmp.step1));}}
}int main(){;ios_base::sync_with_stdio(0); cin.tie(0);cinnm;int a,b;for(int i0;im;i){cinab;s[a].push_back(b);}/* for(int i0;in;i) for(int j: s[i])coutjendl;*/bfs();coutansendl;return 0;
} 这道题也可以用最短路floyed算法做(这种做法我又犯了一个错误n,m定义全局变量后又在下面定义成局部变量这使得调用floyed函数时出错 #includebits/stdc.h
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define mod 1000000007
#define INF 0x3f3f3f3f
const int N250;
int n,m;
int d[N][N];
void floyed()
{for(int k0;kn;k)for(int i0;in;i)for(int j0;jn;j)d[i][j]min(d[i][j],d[i][k]d[k][j]);
}int main(){ //这里不能在定义一次n,mios_base::sync_with_stdio(0);cin.tie(0);cinnm;memset(d,INF,sizeof(d));for(int i0;im;i){int a,b;cinab;d[a][b]1;}for(int i1;in;i){d[i][i-1]1;d[i-1][i]1;d[i][i]0;}floyed();coutd[0][n]endl;return 0;
} 转载于:https://www.cnblogs.com/zhgyki/p/9458856.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82920.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!