zoukankan      html  css  js  c++  java
  • pipioj 1024: 走路还是坐公交 (bfs)

    http://www.pipioj.online/problem.php?id=1024

     1 #define IO std::ios::sync_with_stdio(0);
     2 #define bug(x)  cout<<#x<<" is "<<x<<endl
     3 #include <bits/stdc++.h>
     4 #define iter ::iterator
     5 using namespace  std;
     6 typedef long long ll;
     7 typedef pair<int,int>P;
     8 #define pb push_back
     9 #define mk make_pair
    10 #define se second
    11 #define fi first
    12 #define rs o*2+1
    13 #define ls o*2
    14 const ll mod=1e9+7;
    15 const int N=2e5+5,M=3e6;
    16 
    17 int n,k;
    18 
    19 int vis[N];
    20 
    21 struct node{
    22     int x,w;
    23     bool operator <(const node &t)const{
    24         return w>t.w;
    25     }
    26 };
    27 
    28 int bfs(){
    29     node start;
    30     start.x=n;
    31     start.w=0;
    32     priority_queue<node>q;
    33     q.push(start);
    34     for(int i=0;i<=k*2;i++){
    35         vis[i]=0;
    36     }
    37     vis[n]=1;
    38     while(!q.empty()){
    39         node now=q.top(),ne;
    40         q.pop();
    41         ne=now;
    42         if(now.x==k)return now.w;
    43         ne.w=now.w+1;
    44         if(now.x<k){
    45             if(now.x>0){
    46                 ne.x=now.x*2;
    47                 if(!vis[ne.x]){
    48                     vis[ne.x]=1;
    49                     q.push(ne);
    50                 }
    51             }
    52             ne.x=now.x+1;
    53             if(!vis[ne.x]){
    54                 vis[ne.x]=1;
    55                 q.push(ne);
    56             }
    57         }
    58         if(now.x>0){
    59             ne.x=now.x-1;
    60             if(!vis[ne.x]){
    61                 vis[ne.x]=1;
    62                 q.push(ne);
    63             }
    64         }
    65     }
    66 }
    67 
    68 int main(){
    69     while(~scanf("%d%d",&n,&k)){
    70         if(n>=k){
    71             printf("%d
    ",n-k);
    72             continue;
    73         }
    74         printf("%d
    ",bfs());
    75     }
    76 
    77 }
  • 相关阅读:
    delphi安装pngimage控件,不需要安装,只需引用就行
    怎样把PL/SQLDeveloper字体调大
    resource is out of sync with the file
    SecureCRT:[1]SecureCRT配色方案
    安装开发环境注意事项2
    插入排序
    tomcat更改端口序
    tomcat更改端口
    maven添加jar包
    java总结
  • 原文地址:https://www.cnblogs.com/ccsu-kid/p/14530906.html
Copyright © 2011-2022 走看看