搜索水题。
bfs就行了,显然第一次搜到的就是最优的。
手写队列上瘾......
1 #include2 3 unsigned int st,ed; 4 bool vis[150000]; 5 6 struct data 7 { 8 unsigned int s,c; 9 };10 11 struct queue12 {13 data buf[100000];14 unsigned int hd,tl;15 void pre()16 {17 hd=1;18 }19 void push(data x)20 {21 if(!vis[x.s])buf[++tl]=x,vis[x.s]=1;22 }23 data front()24 {25 return buf[hd++];26 }27 bool empty()28 {29 return tl+1==hd;30 }31 }qq;32 33 unsigned int bfs()34 {35 qq.pre();36 qq.push((data){st,0});37 while(!qq.empty())38 {39 data nw=qq.front();40 unsigned int s=nw.s;41 if(s==ed)return nw.c;42 nw.c++;43 for(unsigned int i=0;i<16;i++)44 {45 unsigned int p=1< >2)&&(!(s&(1<