題意:小哼和小哈一起坐飛機旅遊,他們現在位於1號城市,目標是5號城市,可是1號城市沒有到5號城市直航,不過他們收集了很多航班資訊,現在他們要找出轉機次數最少的方案。。。。。
樣例:5 7 1 5
1 21 3
2 32 4
3 43 5
4 5第一行的5表示有5個城市(編號為1~5),7表示有7條航線,1表示起始城市,5表示目標城市,接下來的每行「a b」,表示a,b之間有航線,也就是a,b之間可以相互到達。。。
思路:這是乙個無向圖,故用廣度優先搜尋。
**:#include
#include
#include
using namespace std;
struct bb
now,nex;
int main()
,book[60]=;
int n,m,a,b,sx,end;
scanf("%d%d%d%d",&n,&m,&sx,&end);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int i=1;i<=m;i++)
queueq; //初始化佇列
now.x=sx;
book[sx]=1;
now.y=0;
q.push(now);
while(!q.empty())
if(nex.x==end)}}
printf("%d\n",nex.y);
}
BFS求最短路 最少轉機
最少轉機 標籤 搜尋 詳情 小哼和小哈一同坐飛機去旅遊,他們現在位於1號城市,目標是5號城市,可是 1號城市並沒有到 5號城市的直航。不過小哼已經收集了很多航班的資訊,現在小哼希望找到一種乘坐方式,使得轉機的次數最少,如何解決呢?輸入格式 第一行的有兩個整數n m s e,n表示有n個城市 城市編號...
最少步數,廣搜
這個題,需要處理的細節太多了 框架5,6分鐘就寫好了,然後開始各種報錯 處理細節大概花了3個小時 include include include include using namespace std struct node queueq int f 4 2 int map 9 9 int bfs ...
最少轉彎問題
給出一張地圖,這張地圖被分為n m n,m 100 個方塊,任何乙個方塊不是平地就是高山。平地可以通過,高山則不能。現在你處在地圖的 x1,y1 這塊平地,問 你至少需要轉幾個彎才能到達目的地 x2,y2 你只能沿著水平和垂直方向的平地上行進,轉彎次數就等於行進方向的改變 從水平到垂直或從垂直到水平...