Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
我很无语G++不过C++倒能过#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <stack> #include <queue> using namespace std; typedef long long LL; #define oo 0x3f3f3f3f #define N 200100 int vis[N]; struct node { int x, s; } a, b; int BFS(int n, int k) { queue<node> q; a.x=n; a.s=0; q.push(a); vis[n]=1; while(!q.empty()) { a=q.front(); q.pop(); if(a.x==k) return a.s; for(int i=1; i<=3; i++) { if(i==1) b.x=a.x+1; else if(i==2) b.x=a.x-1; else b.x=a.x*2; if(b.x<0 || b.x>100000) continue; if(!vis[b.x]) { vis[b.x]=1; b.s=a.s+1; q.push(b); } } } } int main() { int n, k; while(~scanf("%d%d", &n, &k)) { memset(vis, 0, sizeof(vis)); if(n>=k) printf("%d\n", n-k); else printf("%d\n", BFS(n, k)); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator