『普及』浅谈图的基础

news/2025/10/18 20:21:27/文章来源:https://www.cnblogs.com/zbr2025/p/19150120

基础知识

图是一种网状数据结构,用于描述对象的集合以及对象之间的关系。其中,对象用顶点表示,也称为节点,简称点。对象之间的关系用连接顶点的边表示。若图中的每条边是单向的,则该图称为有向图;若图中的每条边是双向的,则该图称为无向图;若图中的每条边有权重,则该图称为加权图。研究图的数学分支被称为图论,这个我们以后会深入讲解。

图的表示

邻接矩阵

用一个二维数组标记两个节点是否相邻,$G_{i, j}$ 表示节点 $i$ 能否到达节点 $j$。若该图为加权图,则 $G_{i, j}$ 标记节点 $i$ 与节点 $j$ 之间的边权,如果没有边的话通常设置其为无穷大或 $-1$。

实现方式

int G[3500][3500];//声明部分
int n, m;//点数与边数
int main()
{cin >> n >> m;for (int i = 1; i <= m; ++ i){int u, v, w;cin >> u >> v;//不加权//cin >> w;//加权G[u][v] = true;//有向图//G[v][u] = true;//无向图//G[u][v] = w;//有向加权图//G[v][u] = w;//无向加权图}return 0;
}

邻接表

用邻接表更节省空间。其中 $G_i$ 存储节点 $i$ 能直接到达的节点。

实现方式

不加权图

vector<int> G[3500];//声明部分
int n, m;//点数与边数
int main()
{cin >> n >> m;for (int i = 1; i <= m; ++ i){int u, v;cin >> u >> v;//不加权G[u].push_back(v)//有向图//G[v].push_back(u)//无向图}return 0;
}

加权图

struct Node{int v, w;
};
vector<Node> G[3500];//声明部分
int n, m;//点数与边数
int main()
{cin >> n >> m;for (int i = 1; i <= m; ++ i){int u, v, w;cin >> u >> v;cin >> w;//加权G[u].push_back({v, w})//有向图//G[v].push_back({u, w})//无向图}return 0;
}

其实还有一种叫链式前向星的表示方式,后面会讲到。

连通图的遍历

深度优先遍历

选择一个顶点为起点(通常为 $1$ 号节点),并递归遍历其所有的邻接节点。为了防止一个节点被重复访问,我们需要一个 $vis$ 数组来标记一个节点有没有被访问过。

实现方式

void dfs(int u)
{cout << u << " ";vis[u] = true;for (auto v : G[u]){if (vis[v] == true){continue;}dfs(v);}
}

广度优先遍历

选择一个顶点为起点,再按照与起点的距离从小到大进行遍历,与广度优先搜索类似。

实现方式

void bfs(int s)
{queue<pair<int,int> > q;vis[s] = true;q.push({s, 0});while (!q.empty()){pair<int,int> t = q.front();q.pop();dis[t.first] = t.second;for(auto v:G[t.first]){if (vis[v] == true){continue;}vis[v] = true;cout << v << " ";}}
}

习题

基础

P5318 【深基18.例3】查找文献

P3916 图的遍历

P1113 杂务

拓展

P1807 最长路

P1363 幻象迷宫

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/939751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运筹学在供应链优化中的实际应用

本文介绍了两位博士后研究员在某中心供应链优化技术团队的研究工作,重点探讨了运筹学在库存优化、路径规划和需求预测等实际业务问题中的应用,包括算法建模和系统优化方法。运筹学在现实问题中的应用:某中心博士后研…

P6715 [CCO 2018] Fun Palace 题解

Description 有一个含 \(n\) 个点的链,每个点有一个权值。 对于任何 \(1\le i\le n-1\),都有一条边连接 \((i,i+1)\)。 您可以在链中的任意一些节点放置一些生物。 对于第 \(i\) 条边,若点 \(i\) 至少有 \(a_i\) 个…

被C语言链表折磨的一天 Σ( △ |||)︴

OIer竟沦落到这个地步——>C语言课要免修就要拿C语言来写一个链表,而且不能拿数组模拟 ( ̄△ ̄;),为了免修,OIer只好学习一手小小指针。 首先需要知道指针是什么: int *a char *a[] double *a 以上三个都是指针…

WebGL学习及项目实战(第03期:绘制多个点,线,面)

@目录目标WebGL原理示意图着色器代码顶点着色器代码解析片元着色器代码解析js代码初始化WebGL代码初始化shaders代码创建着色器对象创建程序对象初始化buffers代码绘制代码代码总结绘制多个点完整代码初始化缓冲区绘制…

ozon定制尺寸和重量

ozon定制尺寸和重量VVV---A888---KKK

CF 359D. Pair of Numbers

D.Pair of Numbers原题链接 题意简述西蒙有一个数组 \(a_1, a_2, ..., a_n\) ,由 n 个正整数组成。今天,西蒙要求你找出一对整数 $l, r (1 \leq l \leq r \leq n) $,使得下列条件成立: 有整数 \(j ( l …

2025多校CSP模拟赛6

T1:最长不下降子序列 (sequence) 思路: 依据做传统最长不下降子序列的的经验,这题用 \(dp\) 。 因为 \(a\) 的值只有 \(1,2\) ,并且翻转操作只进行一次,所以我们考虑什么样的情况一次翻转能产生最长不下降子序列呢…

Java基础——类型转换,变量、常亮、作用域,基本运算符

Java基础——类型转换,变量、常亮、作用域,基本运算符类型转换 从低到高--------------> byte,short,char-->int-->long-->float-->double (小数优先级高于整数) 运算过程中需要将不同类型的值转换…

洛谷 LGR-246 S 模拟赛

100 + 0 + 44 + 24 = 168, Rank 469/3708.下次再也不在过掉了一个题的情况下试图去想第二个题的正解了 /ll【LGR-246】SCP 2025 第二轮(复赛 S 组)模拟 链接:link 题解:题目题解区内 时间:4h (2025.10.18 14:30~1…

godot3D节点本身的偏转数值错误竟会导致空间移动穿模??!

在Godot引擎中,当RigidBody3D节点被施加一个异常扭矩值apply_torque((-inf,inf,-inf))时,即使不会导致物体实际旋转,也会引发异常物理行为:物体在空间线性力或自由落体作用下会匀速穿模。测试表明,RigidBody3D的姿…

Kafka面试精讲 Day 24:Spring Kafka构建实战

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

重新安装trea cn

重新安装trea cnhttps://blog.csdn.net/weixin_45417754/article/details/149644689

题解:qoj7938 Graph Race

简单题。 题意:给出一张图,边权为 \(1\),每个点有属性 \(a,b\),定义一个点 \(u\) 的权值 \(f(u)\) 为 \(\max _{u\not=v}a_v-b_v\operatorname{dis}(u,v)\),按从小到大的顺序输出与 \(1\) 相连的的点的 \(f\) 值。…

java中的初等函数

java中的初等函数一、函数 基本初等函数:基本初等函数是指常值函数、幂函数、指数函数,对数函数、三角函数、反三角函数这六类函数。 初等函数:将由基本初等函数经过有限次加、减、乘、除四则运算和有限次复合运算所…

【机器人】SG-Nav 分层思维链H-CoT | 在线分层3D场景图 | 目标导航 - 教程

【机器人】SG-Nav 分层思维链H-CoT | 在线分层3D场景图 | 目标导航 - 教程2025-10-18 19:28 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: …

Dr. Jane Goodall

Dr. Jane Goodallwhen I was in gomi particularly I felt very very close to a great spiritual [Music] power if we think of the Bible it would be in which we live and move and have our being and I felt th…

专用硬件神经网络优化技术解析

本文深入探讨了针对专用硬件优化神经网络架构的技术方案,通过优化搜索空间设计和结合专家经验,在多个实际应用中实现了高达55%的延迟降低,涵盖了检测模型、分类模型和语义分割等具体应用场景。专用硬件神经网络优化…

学习逆向的背景知识(自用)

学习逆向的背景知识(自用) 常见的寄存器指令指针(程序计数器) IP EIP RIP 寄存下一个指令的地址通用寄存器:累加器寄存器 EAX RAX 寄存算术运算结果基址寄存器 EBX RBX 寄存引用偏移量的基址…

Linux-网络安全私房菜(二)

Linux-网络安全私房菜(二)目录防火墙防火墙简单操作iptablestips建议系统资源篇章理解数据流输出重定向stress压力测试命令free命令netstat命令ss命令软件包篇章rpm包管理dpkg包管理磁盘篇章MBRfdiskGPT(GUID)gdiskpar…

pycharm使用远程的ssh的解释器

今天使用了远程ssh的解释器1.使用 专业版本的pycharm 2. 3. 解释器使用 .conda/envs/.../lth/python.exe 4. 5. 如果你有一些数据集也在这附近,需要把数据集 exclude掉 总的来说, 这么做就够了。 可惜我老师只有…