BFS求最短路 最少轉機

2022-03-01 06:18:00 字數 974 閱讀 4797

最少轉機

標籤:搜尋

詳情:小哼和小哈一同坐飛機去旅遊,他們現在位於1號城市,目標是5號城市,可是

1號城市並沒有到

5號城市的直航。不過小哼已經收集了很多航班的資訊,現在小哼希望找到一種乘坐方式,使得轉機的次數最少,如何解決呢?

輸入格式:

第一行的有兩個整數n m s e,n表示有n個城市(城市編號為1~n),m表示有m條航線,s表示起點城市,e表示目標城市。

接下來m行每行是一條類似「a b」這樣的資料表示城市a和城市b之間有航線,也就是說城市a和城市b之間可以相互到達

輸出格式:

s號城市到e號目標城市,需要飛行幾次?
限制:1<=n<=1000

1<=m<=300000

樣例:輸入

5 7 1 5

1 21 3

2 32 4

3 43 5

4 5輸出

2分析:本題也可用dfs求解,但bfs時間複雜度更低,並且bfs更適用於所有邊權值相同的情況。

**:

#include #include #include #include #include #include #include #include #include #define inf 99999999

using namespace std;

const int maxn=1005;

int e[maxn][maxn];

int vis[maxn];

int minx=inf;

int n,m,s,ex;

typedef struct nodenode;

void bfs(int x)

}for(int i=1;i<=n;i++)}}

}int main()

bfs(s);

printf("%d\n",minx);

return 0;

}

最少轉機(廣搜)

題意 小哼和小哈一起坐飛機旅遊,他們現在位於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表示起...

BFS求最短路

假設有乙個n行m列的迷宮,每個單位要麼是空地 用1表示 要麼是障礙物 用0表示 如和找到從起點到終點的最短路徑?利用bfs搜尋,逐步計算出每個節點到起點的最短距離,以及最短路徑每個節點的前乙個節點。最終將生成一顆以起點為根的bfs樹。此時bfs可以求出任意一點到起點的距離。poj3984 bfs求最...

BFS求最短路

假設有乙個n行m列的迷宮,每個單位格要麼是空地 用1來表示 要麼是障礙物 用0來表示 如何找到從起點到終點的最短路徑?分析 要找到終點到起點的最短路徑,可以使用二叉樹的bfs,因為二叉樹的bfs的訪問順序就是結點到根節點的距離,從小到大訪問的,因此可以從迷宮圖的起點開始進行bfs的寬度優先遍歷。遍歷...