最少转机(无路径之和) 图的广度优先遍历

简介: 最少转机(无路径之和) 图的广度优先遍历




书上没有自己画好丑,无穷字符还打不出来


输入条件:

5 7 1 5

1 2

1 3

2 3

2 4

3 4

3 5

4 5


代码:


#include <stdio.h>
struct node{
  int x;  //城市编号
  int s;  //转机的次数 
};
int main()
{
  //需要队列
  struct node que[2501];
  int e[51][51]={0},book[51]={0};
  int head,tail;
  int i,j,n,m,start,end,flag=0,a,b,cur;
  scanf("%d%d%d%d",&n,&m,&start,&end);
  //初始化表格
  for(i=1;i<=n;i++)
  for(j=1;j<=n;j++){
    if(i==j)
    e[i][j]=0;
    else
    e[i][j]=999999;   
  }
  for(i=1;i<=m;i++){
  scanf("%d%d",&a,&b);
  e[a][b] = 1;
  e[b][a] = 1;
  }
  head=1;
  tail=1;
  que[tail].x = start; //队列第一个城市 
  que[tail].s = 0;
  tail++;
  book[start] = 1;  //表示访问过了 
  while(head<tail)
  {
  cur = que[head].x;
  //遍历表格中cur对应行 
  for(i=1;i<=n;i++){
    //如果该结果不为无穷且没有访问过,放入队列中 
    if(e[cur][i]!=999999&&book[i]==0){   
    que[tail].x = i;
    que[tail].s = que[head].s+1;
    tail++;
    book[i]=1;  //进行标记 
    }
    if(que[tail-1].x==end){
    flag=1;
    break;
    }
  }
  if(flag)
    break;
  head++;
  } 
  printf("最少进行%d次转机",que[tail-1].s); 
  return 0;
}


题意分析


本道题需要无向图,且无权,用一个表格来记录

依据队列来求出最少转机的次数,这道题用宽搜比较好


记录下我的错误点:

1.if(e[cur][i]!=999999&&book[i]==0) 后面的book[i] 我写成了book[cur]

2.que[tail].s = que[head].s+1; 后面的que[head].s+1 写成que[tail].s+1


要将一个点扩展的下标和这个点的下标分清楚,并且分清队列中head与tail


还有在书籍中的估计印刷错误:



相关文章
|
1月前
|
并行计算 测试技术 区块链
【图论】【堆优化的单源路径】LCP 20. 快速公交
【图论】【堆优化的单源路径】LCP 20. 快速公交
|
1月前
|
机器学习/深度学习 算法 测试技术
【单源最短路 图论】882. 细分图中的可到达节点
【单源最短路 图论】882. 细分图中的可到达节点
|
10月前
|
存储 算法
深度优先遍历(DFS):探索图的奥秘
当进行深度优先遍历(DFS)时,我们需要按照一定的步骤来遍历图中的节点。 选择起始节点:选择图中的一个起始节点作为遍历的起点。 标记已访问:将起始节点标记为已访问,并将其放入数据结构中,比如栈或递归调用。 探索相邻节点:从起始节点开始,探索与其相邻的节点。这是通过查找邻接表来实现的,邻接表存储了每个节点的相邻节点信息。 深入探索:选择一个相邻节点,标记为已访问,并将其放入数据结构中。然后,从这个相邻节点出发,继续探索其相邻节点,形成一个深入的路径。这一步是递归的核心。 回溯:当没有未访问的相邻节点时,回溯到上一个节点,继续探索其他未访问的相邻节点。这可以通过从数据结构中弹出节点来实现,或者从递
230 0
|
11月前
L2-020 功夫传人(树的建立和BFS)
L2-020 功夫传人(树的建立和BFS)
48 0
|
11月前
|
存储 索引
树与图中的dfs和bfs—— AcWing 846. 树的重心 AcWing 847. 图中点的层次
树与图中的dfs和bfs—— AcWing 846. 树的重心 AcWing 847. 图中点的层次
55 0
|
存储 索引
搜索与图论-树与图的广度优先遍历
搜索与图论-树与图的广度优先遍历
|
存储 索引
搜索与图论-树与图的深度优先遍历
搜索与图论-树与图的深度优先遍历
|
算法
蛮力法解决旅行商问题(穷举查找求最短路径)含解析与代码实现
蛮力法解决旅行商问题(穷举查找求最短路径)含解析与代码实现
336 0
|
算法
【每日一题Day38】LC882细分图中的可到达节点 | 图论
给你一个无向图(原始图),图中有 n 个节点,编号从 0 到 n - 1 。你决定将图中的每条边 细分 为一条节点链,每条边之间的新节点数各不相同。
80 0
|
人工智能 算法 定位技术
【算法作业】实验五:神奇宝贝大军 & 到迷宫出口的最短路径
【算法作业】实验五:神奇宝贝大军 & 到迷宫出口的最短路径
239 0
【算法作业】实验五:神奇宝贝大军 & 到迷宫出口的最短路径