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. 自定义HttpMessageConverter实现RestTemplate的exchange方法返回自定义格式数据

    一 概述 实现如下效果代码,且可正常获取到返回数据: ResponseEntity<JsonObject> resEntity = restTemplate .exchange(url, ...

  2. kubernetes secret 和 serviceaccount删除

    背景 今天通过配置创建了一个serviceaccounts和secret,后面由于某种原因想再次创建发现已存在一个serviceaccounts和rolebindings.rbac.authoriza ...

  3. ros之参数的使用与编程方法

    参数模型 ROS Master (Parameter Server) /robot_name: "my_robot"        ----{Node A   Node B} /r ...

  4. Java properties文件集

    log4j: log4j.rootLogger=info, console, log, error ###Console ### log4j.appender.console = org.apache ...

  5. 命令行压缩解压缩一 7z

    命令行压缩解压缩一 7z  1) 简介  7z,全称7-Zip, 是一款开源软件.是目前公认的压缩比例最大的压缩解压缩软件.  主页:http://www.7-zip.org/  中文主页:http: ...

  6. SpringMVC基础(二)_文件上传、异常处理、拦截器

    实现文件上传 实现文件上传,需要借助以下两个第三方 jar 包对上传的二进制文件进行解析: commons-fileupload commons-io form表单的 enctype 取值必须为:mu ...

  7. The current test process

    样机测试 测试前: 工作内容: 1.需求分析.编写.评审: 项目开工会由项目负责人参加,参加会议时做好笔记,对项目的功能类似,功能模块,测试时间点有个大致的了解. 原始需求进行需求文档细化:按照模块进 ...

  8. 形象解释各种卷积算法(Convolution animations)

    No padding, no strides Arbitrary padding, no strides Half padding, no strides Full padding, no strid ...

  9. 简单看看ThreadPoolExecutor原理

    线程池的作用就不多说了,其实就是解决两类问题:一是当执行大量的异步任务时线程池能够提供较好的性能,在不使用线程池时,每当需要执行异步任务是需要直接new一个线程去执行,而线程的创建和销毁是需要花销的, ...

  10. 深入分析Java反射(三)-泛型

    前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行 ...