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. [Ubuntu]解决"系统的网络服务与此版本的网络管理器不兼容"提示

    先贴方法: sudo -s ' 获取root权限 apt-get install network-manager ' 重装网络管理器 如果系统提示有升级包可用则安装即可. 开机后,右上角没有网络图标. ...

  2. Shell常用命令之yum

    介绍 yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理 ...

  3. Shell常用命令之printf

    printf 内容格式化输出 格式 printf [format] [输入内容] format参数 %b:打印相关内容并解释其中反斜杠"\"的特殊字符 %q:以shell引用的格式 ...

  4. JDK源码系列总索引

    一 目标 记录学习jdk源码的一些笔记和心得,jdk版本使用11.0.1,工具idea Class后面序号为优先级1-4,优先级递减 目录转载自博客: https://blog.csdn.net/qq ...

  5. spring中创建bean对象的三种方式以及作用范围

    时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...

  6. ROS和Gazebo进行机器人仿真(一)

    Gazebo是一种多机器人仿真器,可用于室内外机器人仿真.Gazebo在ROS中有良好的接口,包含ROS和Gazebo的所有控制. 若要实现ROS到Gazebo的通信,我们必须安装ROS-Gazebo ...

  7. FFmpeg被声明为已否决的解决方案

    参考雷神的最简单的打印Hello World的程序: #include <stdio.h> #include <string.h> extern "C" { ...

  8. LeetCode 547. Friend Circles 朋友圈(C++/Java)

    题目: https://leetcode.com/problems/friend-circles/ There are N students in a class. Some of them are ...

  9. CLion在项目里编译不同文件

    1. 在完整的项目下找到CMakeList.txt(项目配置文件) 2. Build 和 Run的目标在add_executable参数中 3. 将其修改为如下格式:add_executable(pr ...

  10. GORM入门指南

    gorm是一个使用Go语言编写的ORM框架.它文档齐全,对开发者友好,支持主流数据库. gorm介绍 Github GORM 中文官方网站内含十分齐全的中文文档,有了它你甚至不需要再继续向下阅读本文. ...