SDUT 1028 Catch That Cow

简单的暴力bfs搜索

#include<bits/stdc++.h>
using namespace std;

const int maxN=100005;
int cnt[maxN];

int bfs(int s,int e){
    for(int i=0;i<maxN;i++)cnt[i]=maxN;
    cnt[s]=0;
    queue<int> q;
    int u;
    q.push(s);
    while(!q.empty()){
        u=q.front();
        q.pop();
        if(u==e)return cnt[u];
        if(u>0&&cnt[u-1]>cnt[u]+1){
            q.push(u-1);
            cnt[u-1]=cnt[u]+1;
        }
        if(u<100000&&cnt[u+1]>cnt[u]+1){
            q.push(u+1);
            cnt[u+1]=cnt[u]+1;
        }
        if(u<=50000&&cnt[u*2]>cnt[u]+1){
            q.push(u*2);
            cnt[u*2]=cnt[u]+1;
        }
    }
    return -1;
}

int main(){
    int n,k;
    cin>>n>>k;
    cout<<bfs(n,k);
}

猜你喜欢

转载自www.cnblogs.com/TAMING/p/9226028.html