1 solutions
-
0
#include<bits/stdc++.h> using namespace std; const int N=2e5+10; int dist[N]; int dx[]={1,1,2}; int dy[]={-1,1,0}; int start,ee; int bfs(int x) { memset(dist,0x3f,sizeof dist); //初始化距离 dist[x]=0; //起点步数 queue<int> q; q.push(x); while(q.size()) { int t=q.front(); q.pop(); if(t==ee) //走到终点 { return dist[ee]; } //cout<<t<<endl; for(int i=0;i<3;i++) //3中走法 { int a=dx[i]*t+dy[i]; if(a<0||a>=N) continue; if(dist[a]!=0x3f3f3f3f) continue; dist[a]=dist[t]+1; q.push(a); } } return -1; } int main() { cin>>start>>ee; cout<<bfs(start); return 0; }
- 1
Information
- ID
- 1007
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 37
- Accepted
- 10
- Uploaded By