日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

模板-BFS

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模板-BFS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//例:HDU1253 #include<bits/stdc++.h> using namespace std; int mm[51][51][51]; //地圖 bool vis[51][51][51]; //記錄數組 int dx[6]={1,-1,0,0,0,0}; int dy[6]={0,0,1,-1,0,0}; int dz[6]={0,0,0,0,1,-1}; int tx,ty,tz,ut; bool fg; typedef struct node{int x,y,z; //當前坐標int step; //到該點的最少步數 }node; node bp; //開始點信息 void bfs(){queue<node> q;//構造隊列node pre,cur;//上一個點pre,和當前搜索點curq.push(bp);vis[1][1][1]=1;while(!q.empty()){pre=q.front();q.pop();if(pre.x==tx&&pre.y==ty&&pre.z==tz){ //終點跳出if(pre.step<=ut){fg=1;printf("%d\n",pre.step);return;}}for(int i=0;i<6;i++){cur.x=pre.x+dx[i];cur.y=pre.y+dy[i];cur.z=pre.z+dz[i];cur.step=pre.step+1;//根據搜索方向確定curif(cur.x<1||cur.y<1||cur.z<1)continue; //范圍剪枝if(cur.x>tx||cur.y>ty||cur.z>tz)continue; //范圍剪枝if(mm[cur.x][cur.y][cur.z]==1||vis[cur.x][cur.y][cur.z]==1)continue;vis[cur.x][cur.y][cur.z]=1;q.push(cur); //先走到的步數一定最少,個別有例外}} } int main() {int num;scanf("%d",&num);while(num--){scanf("%d %d %d %d",&tx,&ty,&tz,&ut);memset(vis,0,sizeof(vis));for(int i=1;i<=tx;i++){for(int j=1;j<=ty;j++){for(int k=1;k<=tz;k++){scanf("%d",&mm[i][j][k]);}}}fg=0;bp.x=1;bp.y=1;bp.z=1;bp.step=0;bfs();if(!fg){printf("-1\n");}}return 0; }

?

總結

以上是生活随笔為你收集整理的模板-BFS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。