算法模板
// 计算从起点 start 到终点 target 的最近距离function BFS(start, target) {let q: Queue = []; // 核心数据结构let visited = new Set(); // 避免走回头路q.add(start); // 将起点加入队列visited.add(start);let step = 0; // 记录扩散的步数while (q ) {int sz = q.length;/* 将当前队列中的所有节点向四周扩散 */for (let i = 0; i < sz; i++) {let cur = q.pop();/* 划重点:这里判断是否到达终点 */if (cur is target)return step;/* 将 cur 的相邻节点加入队列 */for ( let x of cur.adj())if (x not in visited) {q.offer(x);visited.add(x);}}/* 划重点:更新步数在这里 */step++;}}
