博客
关于我
A - 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历(BFS)
阅读量:265 次
发布时间:2019-03-01

本文共 1327 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要使用广度优先搜索(BFS)来遍历一个给定的无向连通图,并输出从某个顶点出发的遍历序列。同一个结点的同层邻接点,节点编号小的优先遍历。

方法思路

  • 输入处理:首先读取输入数据,确定顶点数、边数和起始顶点。
  • 邻接矩阵:使用邻接矩阵来存储图的结构,这样可以快速查找每个顶点的邻接点。
  • BFS算法:使用队列来进行广度优先搜索,记录访问顺序,避免重复访问节点。同一层内的节点按编号从小到大处理,确保正确的遍历顺序。
  • 输出结果:将遍历结果按要求格式输出。
  • 解决代码

    #include 
    #include
    #include
    using namespace std;int main() { int T; cin >> T; for(int test = 0; test < T; test++) { int k, m, t; cin >> k >> m >> t; vector
    > adj(k, vector
    (k, 0)); for(int i = 0; i < m; i++) { int u, v; cin >> u >> v; adj[u][v] = 1; adj[v][u] = 1; } vector
    order; bool vis[k] = {false}; queue
    q; q.push(t); vis[t] = true; order.push_back(t); while(!q.empty()) { int v = q.front(); q.pop(); for(int i = 0; i < k; i++) { if(!vis[i] && adj[v][i]) { vis[i] = true; q.push(i); order.push_back(i); } } } for(int i = 0; i < k; i++) { if(i != 0) { cout << " "; } cout << order[i]; } cout << endl; } return 0;}

    代码解释

  • 读取输入:首先读取测试用例的数量T。对于每个测试用例,读取顶点数k,边数m,以及起始顶点t。
  • 初始化邻接矩阵:使用一个二维向量adj来存储邻接矩阵,初始化为0表示没有边。读取每条边并填充邻接矩阵。
  • BFS初始化:使用一个队列来管理当前需要处理的节点,记录已经访问的节点,避免重复访问。起始顶点t被首先处理,加入队列,并记录到结果数组order中。
  • 处理队列:循环处理队列中的每个节点,遍历其所有邻接点。如果邻接点未被访问过,则标记为已访问,加入队列,并记录到结果数组中。
  • 输出结果:将结果数组转换为字符串格式,按要求输出每行的遍历结果。
  • 转载地址:http://vdia.baihongyu.com/

    你可能感兴趣的文章
    none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
    查看>>
    None还可以是函数定义可选参数的一个默认值,设置成默认值时实参在调用该函数时可以不输入与None绑定的元素...
    查看>>
    NoNodeAvailableException None of the configured nodes are available异常
    查看>>
    Vue.js 学习总结(16)—— 为什么 :deep、/deep/、>>> 样式能穿透到子组件
    查看>>
    nopcommerce商城系统--文档整理
    查看>>
    NOPI读取Excel
    查看>>
    NoSQL&MongoDB
    查看>>
    NoSQL介绍
    查看>>
    NoSQL数据库概述
    查看>>
    Notadd —— 基于 nest.js 的微服务开发框架
    查看>>
    NOTE:rfc5766-turn-server
    查看>>
    Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Notepad++在线和离线安装JSON格式化插件
    查看>>
    notepad++最详情汇总
    查看>>
    notepad++正则表达式替换字符串详解
    查看>>
    notepad如何自动对齐_notepad++怎么自动排版
    查看>>
    Notes on Paul Irish's "Things I learned from the jQuery source" casts
    查看>>
    Notification 使用详解(很全
    查看>>
    NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
    查看>>
    NotImplementedError: Could not run torchvision::nms
    查看>>