博客
关于我
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/

    你可能感兴趣的文章
    Notification 使用详解(很全
    查看>>
    NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
    查看>>
    NotImplementedError: Could not run torchvision::nms
    查看>>
    nova基于ubs机制扩展scheduler-filter
    查看>>
    Now trying to drop the old temporary tablespace, the session hangs.
    查看>>
    nowcoder—Beauty of Trees
    查看>>
    np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?
    查看>>
    np.power的使用
    查看>>
    NPM 2FA双重认证的设置方法
    查看>>
    npm build报错Cannot find module ‘webpack/lib/rules/BasicEffectRulePlugin‘解决方法
    查看>>
    npm build报错Cannot find module ‘webpack‘解决方法
    查看>>
    npm ERR! ERESOLVE could not resolve报错
    查看>>
    npm ERR! fatal: unable to connect to github.com:
    查看>>
    npm ERR! Unexpected end of JSON input while parsing near '...on":"0.10.3","direc to'
    查看>>
    npm ERR! Unexpected end of JSON input while parsing near ‘...“:“^1.2.0“,“vue-html-‘ npm ERR! A comp
    查看>>
    npm error Missing script: “server“npm errornpm error Did you mean this?npm error npm run serve
    查看>>
    npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
    查看>>
    npm install CERT_HAS_EXPIRED解决方法
    查看>>
    npm install digital envelope routines::unsupported解决方法
    查看>>
    npm install 卡着不动的解决方法
    查看>>