标签:
#include <iostream> #include <cstring> #include <queue> using namespace std; int n,k; int visit[100005]; struct node { int x,step; }; int go(int x) { if(0<=x&&x<=100000&&!visit[x]) return 1; return 0; } int bfs() { queue<node> q; node st,ed; st.x=n; st.step=0; memset(visit,0,sizeof(visit)); visit[n]=1; q.push(st); while(!q.empty()) { st=q.front(); q.pop(); if(st.x==k) { cout<<st.step<<endl; return 0; } ed.x=st.x+1; if(go(ed.x)) { ed.step=st.step+1; visit[ed.x]=1; q.push(ed); } ed.x=st.x-1; if(go(ed.x)) { ed.step=st.step+1; visit[ed.x]=1; q.push(ed); } ed.x=st.x*2; if(go(ed.x)) { ed.step=st.step+1; visit[ed.x]=1; q.push(ed); } } return 0; } int main() { while(cin>>n>>k) { bfs(); } return 0; }
标签:
原文地址:http://www.cnblogs.com/nefu929831238/p/5538224.html