1. #include <iostream>
  2. #include <queue>
  3.  
  4. using namespace std;
  5.  
  6. /*
  7. 5 7 1 5
  8. 1 2
  9. 1 3
  10. 2 3
  11. 2 4
  12. 3 4
  13. 3 5
  14. 4 5
  15.  
  16. 2
  17. --------------------------------
  18. Process exited with return value 0
  19. Press any key to continue . . .
  20. */
  21.  
  22. class Node
  23. {
  24. public:
  25. Node(int _x, int _z);
  26.  
  27. public:
  28. int x;
  29. int z;
  30. };
  31.  
  32. Node::Node(int _x, int _z)
  33. {
  34. this->x = _x;
  35. this->z = _z;
  36. }
  37.  
  38. const int infinity = 999999;
  39. int vertx, edge, start, end;
  40. int Graph[20][20] = {0}, book[20] = {0};
  41. queue<Node> qgraph;
  42.  
  43. void BFS()
  44. {
  45. book[start] = 1;
  46. Node firstnode(start, 0);
  47. qgraph.push(firstnode);
  48.  
  49. while(!qgraph.empty())
  50. {
  51. int flag = 0;
  52.  
  53. int x = qgraph.front().x;
  54.  
  55. for(int i = 1; i <= vertx; i++)
  56. {
  57. if(Graph[x][i] != infinity && book[i] == 0)
  58. {
  59. book[i] = 1;
  60.  
  61. Node node(i, qgraph.front().z + 1);
  62.  
  63. qgraph.push(node);
  64. }
  65.  
  66. if(qgraph.back().x == end)
  67. {
  68. flag = 1;
  69. break;
  70. }
  71. }
  72.  
  73. if(flag == 1)
  74. {
  75. break;
  76. }
  77.  
  78. qgraph.pop();
  79. }
  80.  
  81. return;
  82. }
  83.  
  84. int main()
  85. {
  86. cin >> vertx >> edge >> start >> end;
  87. for(int i = 1; i <= vertx; i++)
  88. {
  89. for(int j = 1; j <= vertx; j++)
  90. {
  91. if(i == j)
  92. {
  93. Graph[i][j] = 0;
  94. }
  95. Graph[i][j] = infinity;
  96. }
  97. }
  98.  
  99. for(int j = 1; j <= edge; j++)
  100. {
  101. int x, y;
  102. cin >> x >> y;
  103. Graph[x][y] = 1;
  104. Graph[y][x] = 1;
  105. }
  106.  
  107. BFS();
  108.  
  109. cout << endl << qgraph.back().z;
  110.  
  111. return 0;
  112. }

  

Graph-BFS-Fly-图的广度优先遍历-最小转机问题的更多相关文章

  1. 数据结构与算法之PHP用邻接表、邻接矩阵实现图的广度优先遍历(BFS)

    一.基本思想 1)从图中的某个顶点V出发访问并记录: 2)依次访问V的所有邻接顶点: 3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到. 4) ...

  2. 图的广度优先遍历算法(BFS)

    在上一篇文章我们用java演示了图的数据结构以及图涉及到的深度优先遍历算法,本篇文章将继续演示图的广度优先遍历算法.广度优先遍历算法主要是采用了分层的思想进行数据搜索.其中也需要使用另外一种数据结构队 ...

  3. PTA 邻接表存储图的广度优先遍历(20 分)

    6-2 邻接表存储图的广度优先遍历(20 分) 试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(V ...

  4. PTA 邻接表存储图的广度优先遍历

    试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) ) 其中LGraph是邻接表存储的 ...

  5. 算法学习 - 图的广度优先遍历(BFS) (C++)

    广度优先遍历 广度优先遍历是非经常见和普遍的一种图的遍历方法了,除了BFS还有DFS也就是深度优先遍历方法.我在我下一篇博客里面会写. 遍历过程 相信每一个看这篇博客的人,都能看懂邻接链表存储图. 不 ...

  6. 图的广度优先遍历(bfs)

    广度优先遍历: 1.将起点s 放入队列Q(访问) 2.只要Q不为空,就循环执行下列处理 (1)从Q取出顶点u 进行访问(访问结束) (2)将与u 相邻的未访问顶点v 放入Q, 同时将d[v]更新为d[ ...

  7. 利用JGrapht对有向无环图进行广度优先遍历

    环境需求:JDK:1.8 jar:jgrapht-core-1.01.jar package edu; import org.jgrapht.experimental.dag.DirectedAcyc ...

  8. Word Ladder 有必要深究。非图的广度优先遍历。标记

    感觉很生疏. https://leetcode.com/problems/word-ladder/

  9. 【算法导论】图的广度优先搜索遍历(BFS)

    图的存储方法:邻接矩阵.邻接表 例如:有一个图如下所示(该图也作为程序的实例): 则上图用邻接矩阵可以表示为: 用邻接表可以表示如下: 邻接矩阵可以很容易的用二维数组表示,下面主要看看怎样构成邻接表: ...

随机推荐

  1. MySql(十三):MySql架构设计——可扩展性设计之 MySQL Replication

    一.前言 MySQL Replication能够将一个 MySQL Server 的 Instance 中的数据完整的复制到另外一个 MySQL Server 的 Instance 中.虽然复制过程并 ...

  2. 不要随便使用 runAllManagedModulesForAllRequests="true" 来解决问题

    在 IIS 7.0 中,对于使用 Url 路由 访问页面的 ASP.NET 应用程序,IIS可能会不能出 Url 是对 ASP.NET 的请求. 会显示404啊,403啊之类的错误代码(因为路径不存在 ...

  3. Android基础知识之String类使用详解

    原文:http://android.eoe.cn/topic/android_sdk 字符串资源为你的应用程序提供了可以选择的文本样式和格式的文本.这里有三种类型的资源可以为你的应用程序提供字符串. ...

  4. Atitti 住房部建设指南

    Atitti 住房部建设指南 1. 住房部建设的重要意义2 2. 房屋选址::首要核心要素,环境环境环境!!!2 2.1. 价格要素与地段..2 2.2. 与工作地距离,一般是半小时到一个半小时为好3 ...

  5. asp.net mvc 项目架构解析

    请先看框架图: 从上图可知: 1.Controller控制器只是充当了管道的作用.只做任务的分发,不做请求中的具体业务处理. 2.Views视图充当了展示数据的作用.不做任何取数逻辑的处理,只是展示逻 ...

  6. [Windows Azure] How to use the Table Storage Service

    How to use the Table Storage Service version 1.7 version 2.0 This guide will show you how to perform ...

  7. C++11 delete和default

    Defaulted 函数 C++ 的类有四个特殊成员函数,它们分别是:默认构造函数.析构函数.拷贝构造函数以及拷贝赋值运算符.这些类的特殊成员函数负责创建.初始化.销毁,或者拷贝类的对象. 如果程序员 ...

  8. 关于事件冒泡和键盘事件 以及与Angular的区别

    一.事件冒泡 方法一.使用event.cancelBubble = true来组织冒泡 <div @click="show2()"> <input type=&q ...

  9. layui的table中使用switch

    {{# if(false){ }} <input type="checkbox" name="switch" lay-skin="switch& ...

  10. Python socket编程客户端与服务端通信

    [本文出自天外归云的博客园] 目标:实现客户端与服务端的socket通信,消息传输. 客户端 客户端代码: from socket import socket,AF_INET,SOCK_STREAM ...