poj 3278 bfs

来源:互联网 发布:画板软件哪个好 编辑:程序博客网 时间:2024/04/28 06:38
一开始只开了十万的数组,贡献了几次RE,改为100万后AC
#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmath>#include <cstring>using namespace std;int mar[1000100];int main(){int n,k;while(scanf("%d%d",&n,&k) == 2){memset(mar,-1,sizeof(mar));mar[n] = 0;queue<int> q;    q.push(n);    while(!q.empty())    {        int a = q.front();        q.pop();        if(a == k && mar[k] != -1)        break;        if(mar[a-1] == -1 && a-1 < 100100)        {        mar[a-1] = mar[a] + 1;        q.push(a-1);        }        if (mar[a+1] == -1 && a+1 < 100100)        {        mar[a+1] = mar[a] + 1;        q.push(a+1);        }        if (mar[2*a] == -1 && 2*a < 100100)        {        mar[2*a] = mar[a] + 1;        q.push(2*a);        }    }    printf("%d", mar[k]);}return 0;}

原创粉丝点击