博客
关于我
A - 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历(BFS)
阅读量:266 次
发布时间: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/

    你可能感兴趣的文章
    Objective-C实现Zeller 的同余算法 (附完整源码)
    查看>>
    Objective-C实现zellers congruence泽勒一致算法(附完整源码)
    查看>>
    Objective-C实现Zero One Knapsack零一背包计算算法(附完整源码)
    查看>>
    Objective-C实现一个Pangram字符串至少包含一次所有字母算法(附完整源码)
    查看>>
    Objective-C实现一个stack算法(附完整源码)
    查看>>
    Objective-C实现一个通用的堆算法(附完整源码)
    查看>>
    Objective-C实现一分钟倒计时(附完整源码)
    查看>>
    Objective-C实现一阶高斯滤波(附完整源码)
    查看>>
    Objective-C实现万年历(附完整源码)
    查看>>
    Objective-C实现三次样条曲线(附完整源码)
    查看>>
    Objective-C实现上传文件到FTP服务器(附完整源码)
    查看>>
    Objective-C实现不重复字符的最长子串算法(附完整源码)
    查看>>
    Objective-C实现两个字符串由相同的字母组成但排列方式不同(字符串字谜)算法(附完整源码)
    查看>>
    Objective-C实现两个栈实现队列算法(附完整源码)
    查看>>
    Objective-C实现两个队列实现栈算法(附完整源码)
    查看>>
    Objective-C实现两数之和问题(附完整源码)
    查看>>
    Objective-C实现中介者模式(附完整源码)
    查看>>
    Objective-C实现中值滤波(附完整源码)
    查看>>
    Objective-C实现中国剩余定理(附完整源码)
    查看>>
    Objective-C实现中国剩余定理(附完整源码)
    查看>>