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. 简单总结关于阿里云CDN的知识

    CDN概念剖析 这里解释一下几个概念,摘自阿里云官方文档. 源站: 源站决定了回源时,请求到哪个IP 回源host:回源host决定回源请求访问到该IP上的哪个站点 例子1:源站是域名 源站为 www ...

  2. SpringBoot 的不同

    这些在写前端页面的时候,ssm框架中,在页面做出修改之后,保存一下,重新刷新一下浏览器页面就发生了更新 但是sprigBoot中好像不一样,好像是需要对页面进行重新编译一下,浏览器页面才会发生变化 ( ...

  3. Docker深入浅出系列 | Image实战演练

    目录 课程目标 Container与Image核心知识回顾 制作Docker Image的两种方式 Dockerfile常用指令 Image实战篇 通过Dockerfile制作Image 通过Dock ...

  4. Codeforces_734_D

    http://codeforces.com/problemset/problem/734/D 保存最近的八个方向的点,判断即可. #include<iostream> #include&l ...

  5. Codeforces_338_D

    http://codeforces.com/problemset/problem/338/D 中国剩余定理的应用,思路是确定可能符合的最小行和最小列,然后判断是否符合.若不符合则后面的(最小的倍数)也 ...

  6. HDU_1495_模拟

    http://acm.split.hdu.edu.cn/showproblem.php?pid=1495 自己用模拟写的,先除以三个数的最大公约数,弱可乐为奇数,则无解,然后开始模拟. 利用大杯子和小 ...

  7. Educational Codeforces Round 57

    2018.12.28  22:30 看着CF升高的曲线,摸了摸自己的头发,我以为我变强了,直到这一场Edu搞醒了我.. 从即将进入2018年末开始,开启自闭场集合,以纪念(dian)那些丢掉的头发 留 ...

  8. .Net Core中IOC容器的使用

    打代码之前先说一下几个概念,那就是什么是IOC.DI.DIP 虽然网上讲这些的已经有很多了,我这里还是要再赘述一下 IOC容器就是一个工厂,负责创建对象的 IOC控制反转:只是把上端对下端的依赖,换成 ...

  9. Visual Studio 2015 配置 Python 环境

    Visual Studio 2015可以在安装时选择安装Python环境,首次使用VS2015执行python时需要配置环境变量: 配置VS2015的环境前需要先下载Python并安装: https: ...

  10. 命令拼接符 || && 区别

    &&   前面的命令执行成功,执行拼接符后面的命令. ||      前面的命令执行失败,执行拼接符后面的命令. 举例: (1)whoami && net user 真 ...