| ||||||||||
| 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 | |||||||||
这样做是错的,在其他oj上是wrong anwer的进In Reply To:Re:一次AC~~~纪念一下~~~ Posted by:201165148 at 2012-06-21 19:03:23 > #include <stdio.h>
> #include <string.h>
>
> struct data
> {
> int x,min;
> }queue[100000],now;
>
> int flag[100000];
> int in,out;
> int N,K;
>
> int bfs()
> {
> in=out=0;
> queue[in].x=N;
> queue[in].min=0;
> memset(flag,0,sizeof(flag));
> flag[N]=1;
> in++;
>
> while(1)
> {
> now=queue[out++];
>
> if(now.x==K)
> return now.min;
> if(now.x+1<=100000 && !flag[now.x+1])
> {
> queue[in].x=now.x+1;
> queue[in++].min=now.min+1;
> flag[now.x+1]=1;
> }
> if(now.x-1>=0 && !flag[now.x-1])
> {
> queue[in].x=now.x-1;
> queue[in++].min=now.min+1;
> flag[now.x-1]=1;
> }
> if(now.x*2<=100000 && !flag[now.x*2])
> {
> queue[in].x=now.x*2;
> queue[in++].min=now.min+1;
> flag[now.x*2]=1;
> }
> }
> return 213;
> }
>
> int main()
> {
> while((scanf("%d%d",&N,&K))!=EOF)
> {
> printf("%d\n",bfs());
> }
> return 0;
> }
这样做没有考虑在队列里虽然一个点先到达,但可能通过其它方式路径更短……
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator