当前位置: 代码迷 >> 综合 >> poj-3278-bfs
  详细解决方案

poj-3278-bfs

热度:63   发布时间:2023-12-19 11:30:13.0

bfs的问题。注意一下数据范围,水过~~~~

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
#include<stdlib.h>
using namespace std;
int lens;
void bfs(int st,int end)
{int visit[100005];memset(visit,0,sizeof(visit));queue<int>p;p.push(st);visit[st]=1;int x;while(!(p.empty())){x=p.front();p.pop();if(x==end)break;if((x-1>=0)&&!visit[x-1]){p.push(x-1);visit[x-1]=visit[x]+1;}if(x+1<=100004&&!visit[x+1]){p.push(x+1);visit[x+1]=visit[x]+1;}if(x*2<=100004&&!visit[x*2]){p.push(x*2);visit[x*2]=visit[x]+1;}}lens+=visit[x]-1;
}
int main()
{int x,y;lens=0;scanf("%d%d",&x,&y);if(x>=y)lens=x-y;else{bfs(x,y);}printf("%d\n",lens);return 0;
}