//计算从起点start到目标点target 的最短距离
int bfs(node start, node target)
{
queue<node> q;
set<node> visit;
q.push(start);
visit.inset(start);
int step = 0; //记录步数
while (!q.empty())
{
int sz = q.size();
// 将队列中的所有节点向四周扩散
for (int i = 0; i < sz; i++)
{
node cur = q.front();
if (cur == target)
return step;
for (auto x : cur.neighbor)
{
if (visit.count(x) == 0)//visit.find(x) == visit.end()
{
q.push(x);
visit.insert(x);
}
}
}
step++;
}
}