清北学堂—2020.1提高储备营—Day 3(图论初步(一))
qbxt Day 3
——2020.1.19 济南 主讲:李奥
目录一览
1.图论(图、图的存储方式、最小生成树的定义)
总知识点:图论
前言:众所周知,图论是一个非常重要的部分,而这次集训也可以算从头讲起了,所以说知识点很多,(不过好多还是比较简单的,毕竟是基础。。。。。)
一、图(纯知识点,初赛常考)
1.构成:点、边(有向边,无向边)
无向边构成的图叫做无向图;有向边构成的图叫做有向图(又称双向图)
2.度:(1)在无向图中,与这个点相连的边的数量叫做这个点的度。(度数和=边数*2)
(2)在有向图中,度分为两种,分别是入度和出度
入度指以该点为终点的边的数量,出度指以该点为起点的边的数量
入度、出度、边数必须满足一个公式:出度和=入度和=边数
3.图的连通性
(1)连通块:若一个点所在的集合中任意两个点可以互相到达,则称一个连通块。
(2)无向图:任意两连通块间无边相连。
(3)有向图:若一个连通块缩小成一个点,则形成一个拓补图。
4.特殊的图:树、拓补图(有向无环图,即没有任何一对点可以互相达到)
二、图的存储方式
1.邻接矩阵存储
(1)代码模板
//不带权有向图
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
cin>>x>>y;
a[x][y]=1;
}
//不带权无向图
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
cin>>x>>y;
a[x][y]=1;
a[y][x]=1;
//无向图双向标记
}
//带权有向图
memset(a,0,sizeof(a))
for(int i=1;i<=n;i++){
cin>>x>>y>>k; //k表示x到y之间的边的权值为k
a[x][y]=1;
}
//带权无向图
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
cin>>x>>y>>k;
a[x][y]=1;
a[y][x]=1;
//无向图双向标记
}
(2)缺点分析
邻接矩阵对于两点之间有多边相连的情况,他只能其中一个信息(即不能储存所有信息)
补救措施:若求最短路,我们只需要记最短的 a[x][y]=min(a[x][y],k);
2.边列表
(1)对于有向图,如果一个节点x有多条边相连,邻接链表无法很好的处理,边列表就可以很好的解决。
(2)结构:
struct Edge{
int x,y,k,next;
}a[101];
int len;
解释:x指边的起点,y指边的终点,k指该边的权值(有无均可),a[i].next表示与i有共同起点的上一条边的编号。
不过,对于边列表,我们还需要一个辅助数组first[]。
first[x]表示以x为起点的第一条边的编号(注意这个第一实际上是最后加入,编号最大的边)。
代码:
inline void ins(int x,int y,int k){
len++;
a[len].x=x; a[len].y=y; a[len].k=k;
a[len].next=first[x];first[x]=len;
}
memset(first,0,sizeof(first));
len=0;
for(i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&k);
ins(x,y,k);
}
三、最小生成树
(1)定义:对于一个带权联通的无向图,从m条边中选出恰好n-1条边构成的一棵树称为该图的一棵生成树。
一个图的生成树中边权和最小的生成树即为最小生成树。
注:最小生成树可能有多个。
未完待续。。。。。。
清北学堂—2020.1提高储备营—Day 3(图论初步(一))的更多相关文章
- 清北学堂—2020.1提高储备营—Day 4 afternoon(动态规划初步(一))
qbxt Day 4 afternoon --2020.1.20 济南 主讲:顾霆枫 目录一览 1.动态规划初步 2.记忆化搜索 3.递推式动态规划 4.记忆话搜索与递推式动态规划的转化 5.状态转移 ...
- 清北学堂—2020.1提高储备营—Day 4 morning(数论)
qbxt Day 4 morning --2020.1.20 济南 主讲:李奥 目录一览 1.一些符号与基本知识 2.拓展欧几里得,逆元与欧拉定理 3.线性筛法与积性函数(非重点) 总知识点:数论 一 ...
- 清北学堂—2020.1提高储备营—Day 3(图论初步(二))
qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(kruskal算法,最短路径算法,拓扑排序) 总知识点:图论 一.kruskal算法 1.目的:求图的最小生成树 2 ...
- 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)
qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...
- 清北学堂—2020.1提高储备营—Day 1 morning(模拟、枚举、搜索)
qbxt Day 1 morning --2020.1.17 济南 主讲:李佳实 目录一览 1.模拟和枚举 2.基础搜索算法(DFS.BFS.记忆化搜索)以及进阶搜索算法(纯靠自学) 总知识点:基础算 ...
- 清北学堂—2020.1提高储备营—Day 2 morning(并查集、堆)
qbxt Day 2 morning --2020.1.18 济南 主讲:李佳实 目录一览 1.并查集 2.堆 总知识点:基础数据结构 一.并查集 1.描述:并查集是一类十分常用的数据类型,它有着十分 ...
- 清北学堂—2020.1提高储备营—Day 1 afternoon(二分、分治、贪心)
qbxt Day 1 afternoon --2020.1.17 济南 主讲:李佳实 目录一览 1.二分法 2.分治 3.贪心 总知识点:基础算法 一.二分法 (1)算法分析:二分法是一种暴力枚举的优 ...
- 清北学堂—2020.3NOIP数学精讲营—Day 1 morning 重点笔记
qbxt Day 1 morning 重点笔记 --2020.3.8 济南 主讲:钟皓曦 1 正数%负数==正数 负数%正数==负数 负数%负数==负数 a%b的答案的符号取决于a的符号. 2 快速幂 ...
- 清北学堂 2020 国庆J2考前综合强化 Day7
目录 1. 题目 T1 魔力石 题目描述 Sol T2 和 题目描述 Sol T3 数对 题目描述 Sol T4 海豹王国 题目描述 Sol 考场策略 1. 题目 T1 魔力石 题目描述 题目描述 小 ...
随机推荐
- 【Kafka 源码解读】之 【代码没报错但是消息却发送失败!】
聊聊最近,2020年,在2019年的年尾时,大家可谓对这年充满新希望,特别是有20200202这一天.可是澳洲长达几个月的大火,新型冠状病毒nCoV的发现,科比的去世等等事情,让大家感到相当的无奈,生 ...
- centos7安装mysql5.5.62
mysql是我们最常用的开源的关系型数据库,mysql不同版本有时候安装的方式也不尽相同,下面梳理一下mysql5.5.62版本的安装 1.下载mysql5.5.62,URL:https://down ...
- springboot中使用自定义注解实现策略模式,去除工厂模式的switch或ifelse,实现新增策略代码零修改
前言 思路与模拟业务 源码地址 https://gitee.com/houzheng1216/springboot 整体思路就是通过注解在策略类上指定约定好的type,项目启动之后将所有有注解的typ ...
- JDK的下载及安装教程图解(超详细哦~)
一.本人电脑系统介绍及JDK下载途径 1.先说明一下我的电脑为win10系统,64位操作系统~ 2.我选择下载的JDK版本为1.8版本.给大家来两个下载渠道,方便大家的下载~ JDK官网:https: ...
- 学习记录(安装spark)
根据林子雨老师提供的教程安装spark,用的是网盘里下载的课程软件 将文件通过ftp传到ubantu中 根据教程修改配置文件,并成功安装spark 在修改配置文件的时候出现了疏忽,导致找不到该文件,最 ...
- jquery deferred 转载
阮一峰的网络日志 » 首页 » 档案 JavaScript http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquer ...
- qt creator源码全方面分析(2-10-2)
目录 Creating Your First Plugin 创建一个插件项目 构建并运行插件 文件结构 qmake项目 插件元数据模板 插件类 头文件 源文件 Creating Your First ...
- Optional类包含的方法介绍及其示例
Optional类的介绍 javadoc中的介绍 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回> 该对象. 使用场景 用于避免 ...
- 深入理解JVM(学习过程)
这,仅是我学习过程中记录的笔记.确定了一个待研究的主题,对这个主题进行全方面的剖析.笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长.不止是技术. 2020年02月06日22:43:0 ...
- 13-MyBatis03(逆向工程)
MyBatis逆向工程 1.导入jar包 <dependency> <groupId>org.mybatis</groupId> <artifactId> ...