181. 【应-37-2·难】多状态导航最短路
中等
Python
📋 题目描述
多界面应用可以抽象成一张有向图:每个状态是一个节点,每条 `from to` 表示存在一条单向跳转。现给定 N 个状态和 M 条有向边,再给一对起点 start 和终点 end,请输出从 start 跳到 end 至少要经过几条边。
若 start == end,输出 0;若不可达,输出 -1。
📥 输入描述
第一行两个整数 N M(1<=N<=100,0<=M<=10000)。
接下来 M 行 `from to`(有向边)。
最后一行 `start end`,两个状态名。
📤 输出描述
输出一个整数:最短跳数;不可达输出 -1。
输入样例
4 4 A B B C A C C D A D
输出样例
2
提示:BFS 求最短路。维护邻接表 adj[from]=[to,...] 和 dist[start]=0 + 队列。
注意 start == end 直接输出 0;BFS 跑完仍未访问到 end 输出 -1。
请登录后提交代码