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(图论初步(一))的更多相关文章

  1. 清北学堂—2020.1提高储备营—Day 4 afternoon(动态规划初步(一))

    qbxt Day 4 afternoon --2020.1.20 济南 主讲:顾霆枫 目录一览 1.动态规划初步 2.记忆化搜索 3.递推式动态规划 4.记忆话搜索与递推式动态规划的转化 5.状态转移 ...

  2. 清北学堂—2020.1提高储备营—Day 4 morning(数论)

    qbxt Day 4 morning --2020.1.20 济南 主讲:李奥 目录一览 1.一些符号与基本知识 2.拓展欧几里得,逆元与欧拉定理 3.线性筛法与积性函数(非重点) 总知识点:数论 一 ...

  3. 清北学堂—2020.1提高储备营—Day 3(图论初步(二))

    qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(kruskal算法,最短路径算法,拓扑排序) 总知识点:图论 一.kruskal算法 1.目的:求图的最小生成树 2 ...

  4. 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)

    qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...

  5. 清北学堂—2020.1提高储备营—Day 1 morning(模拟、枚举、搜索)

    qbxt Day 1 morning --2020.1.17 济南 主讲:李佳实 目录一览 1.模拟和枚举 2.基础搜索算法(DFS.BFS.记忆化搜索)以及进阶搜索算法(纯靠自学) 总知识点:基础算 ...

  6. 清北学堂—2020.1提高储备营—Day 2 morning(并查集、堆)

    qbxt Day 2 morning --2020.1.18 济南 主讲:李佳实 目录一览 1.并查集 2.堆 总知识点:基础数据结构 一.并查集 1.描述:并查集是一类十分常用的数据类型,它有着十分 ...

  7. 清北学堂—2020.1提高储备营—Day 1 afternoon(二分、分治、贪心)

    qbxt Day 1 afternoon --2020.1.17 济南 主讲:李佳实 目录一览 1.二分法 2.分治 3.贪心 总知识点:基础算法 一.二分法 (1)算法分析:二分法是一种暴力枚举的优 ...

  8. 清北学堂—2020.3NOIP数学精讲营—Day 1 morning 重点笔记

    qbxt Day 1 morning 重点笔记 --2020.3.8 济南 主讲:钟皓曦 1 正数%负数==正数 负数%正数==负数 负数%负数==负数 a%b的答案的符号取决于a的符号. 2 快速幂 ...

  9. 清北学堂 2020 国庆J2考前综合强化 Day7

    目录 1. 题目 T1 魔力石 题目描述 Sol T2 和 题目描述 Sol T3 数对 题目描述 Sol T4 海豹王国 题目描述 Sol 考场策略 1. 题目 T1 魔力石 题目描述 题目描述 小 ...

随机推荐

  1. springboot2.x整合spring-data-jpa的问题

    今天使用springboot整合spring-data-jpa遇到一些问题,直接使用JpaRepository的getOne()方法是会报错的.报错信息为:org.hibernate.LazyInit ...

  2. Web 开发工具类(3): JsonUtils

    JsonUtils 整合了一些对Json的相关操作: package com.evan.common.utils; import java.util.List; import com.fasterxm ...

  3. freemark 基本使用

    实际上用程序语言编写的程序就是模板. FTL (代表FreeMarker模板语言). 这是为编写模板设计的非常简单的编程语言. 模板(FTL编程)是由如下部分混合而成的: 文本:文本会照着原样来输出. ...

  4. 惠普电脑win10关闭自动调节亮度

    自动调节亮度真的太烦人了,突然从亮的画面变暗,又从暗的亮度变量,眼睛受不了.但是试了很多种方法都不行. 方法 第一种: 有一些电脑是有在设置--->显示界面--->有一个 关闭自动调节 按 ...

  5. Dubbo Cluster集群那点你不知道的事。

    这是why技术的第33篇原创文章 本周是在家办公的一周,上面的图就是我在家的工位. 工欲善其事,必先利其器.在家办公,我是认真的. 在家里开发的时候有需求是这样的:一个如果接口调用失败,需要自动进行重 ...

  6. HEXO常用命令总结

    博客搬家:hexo常用命令总结 常见命令 hexo new "postName" #新建文章 hexo new page "pageName" #新建页面(新建 ...

  7. 关于AR眼镜的小结

    根据IDC(International Data Corporation,国际数据公司,IDC是全球著名的信息技术.电信行业和消费科技咨询.顾问和活动服务专业提供商)的报告,2018年AR和VR的产值 ...

  8. c++ 初始化列表和构造函数初始化区别

    先上代码 #include <iostream> class MyContruct { public: MyContruct() { std::cout << "My ...

  9. pip安装了包但pycharm里找不到

    使用pip install scipy安装了scipy1.2.3,但是打开pycharm里import还是报错,打开pycharm设置,里面的解释器里也找不到所需的包. 原因:安装了anaconda, ...

  10. Spring Bean几种注入方式——setter(常用),构造器,注入内部Bean,注入集合,接口...

    依赖注入分为三种方式: 1.1构造器注入 构造器通过构造方法实现,构造方法有无参数都可以.在大部分情况下我们都是通过类的构造器来创建对象,Spring也可以采用反射机制通过构造器完成注入,这就是构造器 ...