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

C++ 树与图的广度优先遍历 || 模版题 :图中点的层次

给定一个 n
个点 m
条边的有向图,图中可能存在重边和自环。

所有边的长度都是 1
,点的编号为 1∼n

请你求出 1
号点到 n
号点的最短距离,如果从 1
号点无法走到 n
号点,输出 −1

输入格式
第一行包含两个整数 n
和 m

接下来 m
行,每行包含两个整数 a
和 b
,表示存在一条从 a
走到 b
的长度为 1
的边。

输出格式
输出一个整数,表示 1
号点到 n
号点的最短距离。

数据范围
1≤n,m≤105
输入样例:
4 5
1 2
2 3
3 4
1 3
1 4
输出样例:
1

#include <iostream>
#include <cstring>
using namespace std;const int N = 10010;int n, m;
int h[N], e[N], ne[N], idx; //邻接表
int d[N], q[N]; //d是距离,q是队列void add(int a, int b)
{e[idx] = b, ne[idx] = h[a], h[a] = idx ++;
}int bfs()
{int hh = 0, tt = 0;q[0] = 1; //第一个元素是起点1memset(d, -1, sizeof d);d[1] = 0;while(hh <= tt){int t = q[hh ++ ];for(int i = h[t]; i != -1; i = ne[i]){int j = e[i];if(d[j] == -1){d[j] = d[t] + 1;q[ ++ tt] = j;}}}return d[n];
}int main ()
{cin>>n>>m;memset(h, -1, sizeof h);for(int i = 0; i < m; i ++ ){int a, b;cin>>a>>b;add(a, b);}cout<<bfs()<<endl;return 0;}
http://www.lryc.cn/news/281329.html

相关文章:

  • k8s---pod控制器
  • 2024.1.11力扣每日一题——构造有效字符串的最少插入数
  • 软件测试|如何使用Selenium处理隐藏元素
  • 第三次面试总结 - 吉云集团 - 全栈开发
  • buuctf-Misc 题目解答分解118-120
  • Hive数据定义(1)
  • golang 反序列化出现json: cannot unmarshal string into Go value of type model.Phone
  • 【闯关练习】—— 1400分(构造)
  • Qt QProgressBar进度条控件
  • 【新】Unity Meta Quest MR 开发(一):Passthrough 透视配置
  • 快速排序【hoare版本】【挖坑法】【双指针法】(数据结构)
  • class_5:在c++中一个类包含另一个类的对象叫做组合
  • Linux - No space left on device
  • STC8H8K蓝牙智能巡线小车——2. 点亮左右转弯灯与危险报警灯
  • 【微信小程序独立开发 3】个人资料页面编写
  • Linux笔记:Linux中的文件系统权限
  • Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图的圆切图,Kotlin(4)
  • WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  • 深入理解JVM虚拟机第三十九篇:JVM中新生代和老年代相关参数设置
  • 打造创新的金融数据平台,加速数字化和智能化转型丨PingCAP 官网金融行业专区上线
  • 记ubuntu2004通过NetworkManager修改网络的优先级
  • Android-常用数据结构和控件
  • react使用recoil进行全局状态管理 + axios进行网络请求
  • 基于Springboot的善筹网(众筹网-有报告)。Javaee项目,springboot项目。
  • 【Python学习】Python学习14-函数
  • C语言中对关键字和标识符的理解
  • 基于Jackson封装的JSON、Properties、XML、YAML 相互转换的通用方法
  • windows的换行符与linux风格的换行符不同的问题
  • RK3568笔记九: DRM显示摄像头
  • 简单明了,汽车级LM317系列LM317D2TR4G线性电压稳压器电源设计-参数应用方案分享