当前位置: 首页 > article >正文

BFS【东北大学oj数据结构11-3】C++

题面

对于给定的有向图 G = (V, E),编写一个程序来找出从顶点 1 到每个顶点的最短距离 d(路径上的最小边数)。每个顶点从 1 到 n 编号。 对于不能从顶点 1 到达的顶点,输出 -1。

输入

第一行给出了 G 中的顶点数 n。 接下来的 n 行给出了每个顶点 u 的邻接表,格式如下:

ukv1​v2​…vk​

u 是顶点的编号,k 是 u 的度数,v1​v2​…vk​是与 u 相邻的顶点的编号。

约束
1≤n≤100

输出

在一行上输出每个顶点的 id 和 d。 id 是顶点的编号,d 是顶点 1 到该顶点的距离。 按顶点编号顺序输出。

输入样例

4
1 2 2 4
2 1 4
3 0
4 1 3

输出样例

1 0
2 1
3 2
4 1 

代码
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm> 
 
using namespace std;
 
// BFS函数,接受图的邻接表和起始节点
void bfs(int start, const vector<vector<int>>& adj, vector<int>& visited,int n) {
    queue<int> q;
    q.push(start);
    visited[start] = 0;
    while (!q.empty()) {
        int u = q.front();
        q.pop();
 
        for (int v : adj[u]) {
            if (visited[v]==-1) {
                visited[v] = visited[u]+1;
                q.push(v);
            }
        }
    }
 
    cout << endl;  
}
 
int main() {
    int n;
    cin >> n;
 
    vector<vector<int>> adj(n);
    vector<int> visited(n, -1);
 
    for (int i = 0; i < n; ++i) {
        int u, k;
        cin >> u >> k;
        u--;
        for (int j = 0; j < k; ++j) {
            int v;
            cin >> v;
            v--;
            adj[u].push_back(v);
        }
    }
 
    bfs(0,adj,visited,n);
    for(int i=0;i<n;i++)
    {
        cout <<(i+1)<<" "<<visited[i]<<endl;
    }
    return 0;
}


http://www.kler.cn/a/453689.html

相关文章:

  • 如何在 Ubuntu 22.04 上安装以及使用 MongoDB
  • 牛客网刷题 ——C语言初阶——BC112小乐乐求和
  • 详细讲解axios封装与api接口封装管理
  • 【漏洞复现】CVE-2014-3120 CVE-2015-1427 Expression Injection
  • 自动驾驶控制算法-离散规划轨迹的误差计算
  • Git多人协作流程与git命令
  • 软件老化分析
  • LeetCode - Google 校招100题 第8天 图(Graph) (2题)
  • 华为原生鸿蒙5.0与代理IP的奇妙融合
  • 企业数字化转型中如何区分“IT投入”和“业务投入”
  • OpenResty开发环境搭建
  • typescript数据类型(二)
  • RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 在 Ubuntu 上安装 Docker Engine
  • 【hackmyvm】Adroit靶机wp
  • 2024国赛A问题5
  • Binoculars——分析证实大语言模型生成文本的检测和引用量按学科和国家明确显示了使用偏差的多样性和对内容类型的影响
  • Linux---防火墙端口设置(firewalld)
  • 谷歌浏览器 Chrome 提示:此扩展程序可能很快将不再受支持
  • 第23天:信息收集-APP应用产权渠道服务资产通讯抓包静态提取动态调试测试范围
  • ASP.NET Web应用程序出现Maximum request length exceeded报错