POJ 3278 Catch That Cow bfs 난이도: 1

1294 단어 catch
http://poj.org/problem?id=3278
n 에서 출발 하여 양쪽 으로 이동 하고 숫자 가 무제 한 확대 되 지 않도록 2 * k 이내 로 제한 합 니 다.
k 이내 로 제한 하지 않도록 주의 하 세 요. 그렇지 않 으 면 계속 사용 - 1 얻 은 결과 가 부족 합 니 다.
#include <cstdio>

#include <cstring>

#include <algorithm>

#include <queue>

using namespace std;

const int maxn=2e5+3;

int n,k;

int dp[maxn];

queue<int>que;

int main(){

        scanf("%d%d",&n,&k);

        memset(dp,0x7f,sizeof(dp));

        dp[n]=0;

        que.push(n);

        bool fl=false;

        while(!que.empty()){

                int f=que.front();que.pop();

                if(f==k){printf("%d
",dp[f]);break;} if(f-1>=0&&dp[f-1]>dp[f]+1){ que.push(f-1); dp[f-1]=dp[f]+1; } if(f+1<=2*k&&dp[f+1]>dp[f]+1){ que.push(f+1); dp[f+1]=dp[f]+1; } if(f<k&&dp[2*f]>dp[f]+1){ que.push(2*f); dp[2*f]=dp[f]+1; } } return 0; }

좋은 웹페이지 즐겨찾기