top1编程
← 返回题目
题解

【入门】鸡飞狗不跳

1 条题解

  • 0
    @ 2026-7-29 0:19:37
    #include <bits/stdc++.h>
    #define ll long long
    #define ld long double
    #define ull unsigned long long
    using namespace std;
    
    int winx,stax=1;
    
    struct node{
    	int x;
    	int nowstep;
    };
    
    int n;
    int v[1000005];
    
    int main(){
    	cin>>stax>>winx;
    	queue <node> q;
    	node start={stax,0};
    	q.push(start);
    	while(!q.empty()){
    		node t=q.front();
    		int ax[13]={0,t.x-1,t.x+1,t.x*2};
    		for(int i=1;i<=3;i++){
    			int newx=ax[i];
    			if(newx>=1&&newx<=100000&&v[newx]==0){
    				node newnode={newx,t.nowstep+1};
    				q.push(newnode);
    				v[newx]=1;
    //				cout<<q.back().x<<" "<<q.back().y<<" "<<newnode.nowstep<<"&#92;n";
    			}
    		}
    		if(t.x==winx){
    			cout<<t.nowstep;
    			return 0;
    		}
    		q.pop();
    	}
    }
    
    • 1