1 Source Code 2 3 Problem: 3278 User: SDUT_NULL 4 Memory: 1068K Time: 63MS 5 Language: G++ Result: Accepted 6 7 Source Code 8 #include9 #include 10 #include 11 #include 12 #include 13 bool s[200010];14 using namespace std;15 struct node16 {17 int num;18 int count;19 } st,st1;20 void bfs(int n,int k)21 {22 queue q;23 if(n==k) {printf("0\n");return;}24 st.num=n;25 st.count=0;26 s[n]=true;27 q.push(st);28 while(!q.empty())29 {30 st1=q.front();31 q.pop();32 if(st1.num==k)break;33 else34 {35 if(st1.num-1>=0&&st1.num-1<=100010&&!s[st1.num-1])36 {37 st.num=st1.num-1;38 st.count=st1.count+1;39 s[st1.num-1]=true;40 q.push(st);41 }42 if(st1.num+1>=0&&st1.num+1<=100010&&!s[st1.num+1])43 {44 st.num=st1.num+1;45 st.count=st1.count+1;46 s[st1.num+1]=true;47 q.push(st);48 }49 if(st1.num*2>=0&&st1.num*2<=100010&&!s[st1.num*2])50 {51 st.num=st1.num*2;52 st.count=st1.count+1;53 s[st1.num*2]=true;54 q.push(st);55 }56 }57 }58 printf("%d\n",st1.count);59 }60 int main()61 {62 int n,k;63 while(scanf("%d%d",&n,&k)!=EOF)64 {65 memset(s,false,sizeof(s));66 bfs(n,k);67 }68 return 0;69 }