版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 图的基本概念及图的存储,引论 哥尼斯堡七桥问题,又称Euler回路问题 一条河流横贯哥尼斯堡城区,它有两条支流,在这两条支流之间夹着一块岛形地带,这里是城市的繁华地区。全城分为北、东、南、岛四个区,各区之间共有七座桥梁联系着。 游人从两岸A、B、C、D中任何一个地方出发,要找到一条路线做到每座桥恰好都通过一次而最后返回原地。 1736年,Euler提出该问题的解不存在。,1.1 基本概念,图论知识的一个特点就是概念特别多。 本节只介绍一些基本的概念,其他概念(如割点、割边等)在其他章节里需要用到的时候再补充。,转载请注明,1.1.1 有向图与无向图,图是由顶点集合和顶点间关系集合(即边
2、的集合或弧的集合)组成的数据结构,通常可以用 来表示,其顶点集合和边的集合分别用 和 表示。,G: graph V: vertex E: edge,例如,图1.1(a)所示的图可以表示为 ,其中顶点集合 ,集合中的元素为顶点的序号;边的集合为: 。,无向图:图中的每条边没有方向。通常用符号(u,v)表示顶点u到顶点v的一条无向边。 有向图:图中的每条边(通常可称为弧)都有方向。通常用符号表示顶点u到顶点v的一条有向边,其中u为这条边的起始顶点(起点),v为这条有向边的终止顶点(终点)。,1.1.2 完全图、稀疏图、稠密图,完全图:任何一对顶点之间都有一条边,这种无向图称为完全图。 有向完全图:
3、任何一对顶点u和v,都存在和两条有向边,这种有向图称为有向完全图。,稀疏图:边或弧的数目相对较少(远小于n(n-1))的图称为稀疏图。 稠密图:边或弧的数目相对较多的图(接近于完全图或有向完全图)称为稠密图。,1.1.3 顶点与顶点、顶点与边的关系,在无向图和有向图中,顶点和顶点之间的关系,以及顶点和边的关系是通过“邻接”这个概念来表示的。,在无向图 中,如果 是 中的元素,即是图中的一条无向边,则称顶点 与顶点 互为邻接顶点,且边 依附于顶点 和 。,例如,在图1.1(a)所示的无向图 中,与顶点1相邻接的顶点有0, 2, 3, 4, 5,而依附于顶点1的边有 , , , 和 。,例如,在图
4、1.1(b)所示的有向图 中,顶点1分别邻接到顶点2, 4, 5,邻接自顶点0和4;有向边 的顶点1邻接到顶点5,顶点5邻接自顶点1;顶点1分别与边 , , , 和 相关联;等等。,在有向图 中,如果 是 中的元素,即是图中的一条有向边,则称顶点 邻接到顶点 ,顶点 邻接自顶点 ,边 与顶点 和 相关联。,1.1.4 顶点的度数及度序列,与顶点度数有关的概念:度数、出度、入度、偶点、奇点; 度序列与Havel-Hakimi定理。,顶点的度(degree):一个顶点 的度是与它相关联的边的条数,记作 。,例如在图1.1(a)所示的无向图 中,顶点1的度数为5,顶点4的度数为3,等等。,在有向图中
5、,顶点的度等于该顶点的出度与入度之和。其中顶点 的出度是以 为起始顶点的有向边的条数,记作 ;顶点 的入度是以 为终点的有向边的条数,记作 。顶点 的度 。例如在图1.1(b)所示的有向图 中,顶点1的出度数为3,入度为2,度为3+2=5。,在无向图和有向图中,边的个数和顶点的度都存在如下关系(假设图 有 个顶点,有 条边):,即在无向图和有向图中,所有顶点的度的总和,等于边的数目的两倍。这是因为,不管是有向图还是无向图,在统计所有顶点的度的总和时,每条边都统计了两次。,偶点:度数为偶数的顶点; 奇点:度数为奇数的顶点; 孤立顶点:度数为0的顶点,称为孤立顶点。孤立顶点不与其他任何顶点邻接。
6、叶(叶顶点、端点):度数为1的顶点,称为叶顶点。其他顶点称为非叶顶点。 图G的最小度:图G所有顶点的最小的度数,记为(G)。 图G的最大度:图G所有顶点的最大的度数,记为(G)。,度序列与Havel-Hakimi定理,度序列:若把图G所有顶点的度数排成一个序列s,则称s为图G的度序列。,s: 2, 5, 4, 3, 3, 1按顶点序号排序 s: 1, 2, 3, 3, 4, 5按度数非减顺序排列 s: 5, 4, 3, 3, 2, 1按度数非增顺序排列,两个问题: 1) 给定一个图,确定它的度序列:很简单; 2) 逆问题:给定一个由非负整数组成的有限序列s,判断s是否是某个图的度序列。,序列是
7、可图的:一个非负整数组成的有限序列如果是某个无向图的度序列,则称该序列是可图的。,Havel-Hakimi定理:由非负整数组成的非增序列s:d1, d2, , dn(n 2, d1 1)是可图的,当且仅当序列 s1: d2 1, d3 1, , dd1+1 1, dd1+2, , dn 是可图的。序列s1中有n-1个非负整数,s序列中d1后的前d1个度数(即d2 dd1+1)减1后构成s1中的前d1个数。,练习: 判断序列s: 7, 7, 4, 3, 3, 3, 2, 1是否是可图的。 判断序列s: 5, 4, 3, 3, 2, 2, 2, 1, 1, 1是否是可图的。,Havel-Hakim
8、i定理实际上给出了根据一个序列s构造图(或判定s不是可图的)的方法:,把序列s按照非递增的顺序排序以后,其顺序为d1, d2, , dn;度数最大的顶点(设为v1),将它与度数次大的前d1个顶点之间连边,然后这个顶点就可以不管了,即在序列中删除首项d1,并把后面的d1个度数减1;再把剩下的序列重新按非递增顺序排序,按照上述过程连边;直到建出完整的图,或出现负度数等明显不合理的情况为止。,序列s: 3, 3, 2, 2, 1, 1,1.1.5 二部图与完全二部图,二部图:设无向图为G(V, E),它的顶点集合V包含两个没有公共元素的子集:X = x1, x2, , xs 和Y = y1, y2,
9、 , yt ,元素个数分别为s和t;并且xi与xj之间(1 i, j s)、yl与yr之间(1 l, r t)之间没有边连接,则称G为二部图。 完全二部图:在二部图G中,如果顶点集合X中每个顶点xi与顶点集合Y中每个顶点yl都有边相连,则称G为完全二部图,记为Ks,t,s和t分别为集合X和集合Y中的顶点个数。,1.1.6 图的同构,图的同构:设有两个图G1和G2,如果这两个图区别仅在于图的画法与(或)顶点的标号方式,则称它们是同构的。意思就是说这两个图是同一个图。,1.1.7 子图与生成树,设有两个图 和 ,如果 ,且 ,则称图 是图 的子图。,例如,图1.8(a)、(b)所示的无向图都是图1
10、.1(a)所示的无向图 的子图,而图1.8(c)、(d)所示的有向图都是图1.1(b)所示的有向图 的子图。,生成树:一个无向连通图的生成树是它的包含所有顶点的极小连通子图,这里所谓的极小就是边的数目极小。如果图中有n个顶点,则生成树有n-1条边。,例如,图1.1(a) 所示的无向图 的一个生成树如图1.9(a)所示。为了更形象地表示这个生成树,图(b)把它画成了以顶点0为根节点的树,图(c)把它画成了以顶点2为根节点的树。,1.1.8 路径,路径是图论中一个很重要的概念。,在图 中,若从顶点 出发,沿着一些边经过一些顶点 , , , ,到达顶点 ,则称顶点序列( , , , , , )为从顶
11、点 到顶点 的一条路径。其中 , , , 为图 中的边,如果 是有向图,则 , , , 为图 中的有向边。,例如,在图(a)所示的无向图 中,顶点序列(0, 1, 4, 3)是从顶点0到顶点3的路径,其中(0,1), (1,4), (4,3)都是图 中的边;另外,顶点序列(0, 2, 3)也是顶点0到顶点3的路径。,在图(b)所示的有向图 中,顶点序列(2, 4, 1, 5)是顶点2到顶点5的路径,其中, , 都是图 中的边;而顶点6到顶点0没有路径。,简单路径:若路径上各顶点 , , , , , 均不互相重复,则这样的路径称为简单路径。例如,在图 中,路径(0, 1, 4, 3)就是一条路径
12、。,回路:若路径上第一个顶点 与最后一个顶点 重合,则称这样的路径为回路。 例如,图 中的路径(1, 2, 3, 4, 1)和图 中的路径(4, 3, 2, 4)都是回路。,1.1.9 连通性,在无向图中,若从顶点 到 有路径,则称顶点 和 是连通的。如果无向图中任意一对顶点都是连通的,则称此图是连通图。如果一个无向图不是连通的,则其极大连通子图称为连通分量。,例如图(a)所示的无向图 就是一个连通图。在图 中,如果去掉边(1,5),则剩下的图就是非连通的,且包含两个连通分量,一个是由顶点0,1,2,3,4组成的连通分量,另一个是由顶点5构成的连通分量。,又如,图1.10所示的无向图就是非连通
13、的。其中顶点A、B、C和E构成一个连通分量,顶点D、F、G和H构成另一个连通分量。,在有向图中,若对每一对顶点 和 ,都存在从 到 的路径,也存在从 到 的路径,则称此有向图为强连通图。例如图1.11所示的有向图就是强连通图。,例如,图(a)所示的非强连通图包含4个强连通分量,如图(b)所示。其中,顶点1, 2, 3, 4构成一个强连通分量,在这个子图中,每一对顶点 和 ,都存在从 到 的路径,也存在从 到 的路径;顶点0, 5, 6都自成一个强连通分量。,对于非强连通图,其最大强连通子图称为其强连通分量。,1.1.10 权值、有向网与无向网,权值:某些图的边具有与它相关的数,称为权值。这些权
14、值可以表示从一个顶点到另一个顶点的距离、花费的代价、所需的时间等。如果一个图,其所有边都具有权值,则称为网络。 根据网络中的边是否具有方向性,又可以分为有向网和无向网。网络可以用 表示。,例如,图1.13(a)所示的无向网可表示为 ,其中顶点集合为: 边的集合为:,在边的集合中,每个元素中的第3个分量表示边的权值。,同样在边的集合中,每个元素中的第3个分量也表示边的权值。,例如,图1.13(b)所示的有向网可表示为 ,其中顶点集合为: 边的集合为:,1.2 图的存储表示,常用的存储表示方法有: 邻接矩阵 邻接表 邻接多重表,1.2.1 邻接矩阵,在邻接矩阵中,除了一个记录各个顶点信息的顶点数组
15、外,还有一个表示各顶点之间关系的矩阵,称为邻接矩阵。,1. 有向图(无向图)的邻接矩阵,设 是一个具有 个顶点的图,则图的邻接矩阵是一个二维数组 ,它的定义为:,注意:如果图中存在环(连接某个顶点自身的边)和重边(多条边的起点一样,终点也一样)的情形,则无法用邻接矩阵存储。,问题:从图的邻接矩阵可以获得什么信息? (说明:邻接矩阵经过运算如乘方后,还可以获得更多的信息,具体请参见相关图论书籍),例1.1 用邻接矩阵存储有向图,并输出各顶点的出度和入度。,输入描述: 输入文件中包含多个测试数据,每个测试数据描述了一个有向图。每个测试数据的第一行为一个正整数n (1n100),表示该有向图的顶点数
16、目,顶点的序号从1开始计起。接下来包含若干行,每行为两个正整数,用空格隔开,分别表示一条边的起点和终点。每条边出现一次且仅一次,图中不存在环和重边。0 0代表该测试数据的结束。输入数据最后一行为0,表示输入数据结束。,输出描述: 对输入文件中的每个有向图,输出两行:第1行为n个正整数,表示每个顶点的出度;第2行也为n个正整数,表示每个顶点的入度。每两个正整数之间用一个空格隔开,每行的最后一个正整数之后没有空格。,第二种输入方式!,样例输出: 1 3 1 1 2 1 0 0 2 2 1 2 1 1,样例输入: 7 1 2 2 3 2 5 2 6 3 5 4 3 5 2 5 3 6 5 0 0 0
17、,分析: 在程序中可以使用一个二维数组存储表示邻接矩阵。注意,输入文件中顶点的序号是从1开始计起的,而二维数组中的下标是从0开始计起,所以在将边的信息存入到邻接矩阵时,需要将边的起点和终点的序号减1。在将有向边存储表示到邻接矩阵Edge中时,只需要将元素Edgeu-1v-1的值置为1。,本题中的有向图都是无权图,邻接矩阵中每个元素要么为1,要么为0。 第i个顶点的出度等于邻接矩阵中第i行所有元素中元素值为1的个数。把第i行所有元素值累加起来,得到的结果也是该顶点的出度。 同理,在计算第i个顶点的入度时,也只需将第i列所有元素值累加起来累加起来即可。,题目要求输出n个顶点的出度(入度)时,每两个
18、正整数之间用一个空格隔开,最后一个正整数之后没有空格。可以采取的策略是:输出第0个顶点的出度时前面没有空格,输出后面n-1个顶点的出度时输出一个空格。,#include #include #define MAXN 100 int EdgeMAXNMAXN;/邻接矩阵 int main( ) int i, j;/循环变量 int n;/顶点个数 int u, v;/边的起点和终点 int od, id;/顶点的出度和入度 while( 1 ) scanf( %d, /构造邻接矩阵 ,for( i=0; in; i+ )/求各顶点的出度 od = 0; for( j=0; jn; j+ ) od
19、+= Edgeij; if(i=0) printf( %d, od ); else printf( %d, od ); printf( n ); for( i=0; in; i+ )/求各顶点的入度 id = 0; for( j=0; jn; j+ ) id += Edgeji; if(i=0) printf( %d, id ); else printf( %d, id ); printf( n ); return 0; ,例1.2 青蛙的邻居(Frogs Neighborhood) 来源:POJ1659,题目描述: 未名湖附近共有n个大小湖泊L1, L2, ., Ln(其中包括未名湖),每个
20、湖泊Li里住着一只青蛙Fi(1in)。如果湖泊Li和Lj之间有水路相连,则青蛙Fi和Fj互称为邻居。现在已知每只青蛙的邻居数目x1, x2, ., xn,请你给出每两个湖泊之间的相连关系。,输出描述: 对输入的每组测试数据,如果不存在可能的相连关系,输出NO。否则输出YES,并用nn的矩阵表示湖泊间的相邻关系,即如果湖泊i与湖泊j之间有水路相连,则第i行的第j个数字为1,否则为0。每两个数字之间输出一个空格。如果存在多种可能,只需给出一种符合条件的情形。相邻两组测试数据之间输出一个空行。,输入描述: 第一行是测试数据的组数t(0 t 20)。每组数据包括两行,第一行是整数n(2 n 10),第
21、二行是n个整数,x1, x2,., xn(0 xi n)。,样例输出: YES 0 1 1 1 1 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 NO,样例输入: 2 7 4 3 1 5 4 2 1 6 4 3 1 4 2 0,分析1: 本题的意思实际上是给定一个非负整数序列,问是不是一个可图的序列,也就是说能不能根据这个序列构造一个图。这需要根据Havel-Hakimi定理中的方法来构图,并在构图中判断是否出现了不合理的情形。有以下两种不合理的情形: (1) 某次
22、对剩下序列排序后,最大的度数(设为d1)超过了剩下的顶点数; (2) 对最大度数后面的d1个度数各减1后,出现了负数。 一旦出现了以上两种情形之一,即可判定该序列不是可图的。,分析2: 如果一个序列是可图的,本题还要求输出构造得到的图的邻接矩阵,实现思路是: (1) 为了确保顶点序号与输入时的度数顺序一致,特意声明了一个vertex结构体,包含了顶点的度和序号两个成员。 (2) 每次对剩下的顶点按度数从大到小的顺序排序后,设最前面的顶点(即当前度数最大的顶点)序号为i、度数为d1,对后面d1个顶点每个顶点(序号设为j)度数减1,并连边,即在邻接矩阵Edge中设置Edgeij和Edgeji为1。
23、,#include #include #include #define N 15 struct vertex int degree;/顶点的度 int index;/顶点的序号 vN; int cmp( const void *a, const void *b ) return (vertex*)b)-degree - (vertex*)a)-degree; int main( ) int r, k, p, q;/循环变量 int i, j;/顶点序号(用于确定图中边的两个顶点) int d1;/对剩下序列排序后第1个顶点(度数最大的顶点)的度数 int T, n;/测试数据个数,湖泊个数 i
24、nt EdgeNN, flag;/邻接矩阵,是否存在合理相邻关系的标志,scanf( %d, ,if( flag ) puts( YES ); for( p=0; pn; p+ ) for( q=0; qn; q+ ) if(q) printf( ); printf( %d, Edgepq ); puts( ); else puts( NO ); if(T) puts( ); return 0; ,2. 有向网(无向网)的邻接矩阵,对于网络(即带权值的图),邻接矩阵定义为:,邻接矩阵的局限性,尽管绝大多数图论的题目可以采用邻接矩阵存储图,但由于邻接矩阵无法表达环和重边的情形,所以有时不得不采用
25、邻接表去存储图,详见欧拉回路的课件。 另外,当图的边数(相对顶点个数)较少时,使用邻接矩阵存储会浪费较多的存储空间,而用邻接表存储可以节省存储空间。,1.2.2 邻接表 ,邻接表:把同一个顶点发出的边链接在同一个称为边链表的单链表中。(这种邻接表也称为出边表) 单链表的每个结点代表一条边,称为边结点,每个边结点有2个域。,逆邻接表:也称为入边表,顶点i的边链表中链接的是所有进入该顶点的边。适合求顶点的入度。,无向图的邻接表 每条边在邻接表里出现2次。,邻接表的实现,以有向图为例介绍邻接表的实现方法。为了方便求解顶点的出度和入度,在实现时,把出边表和入边表同时包含在表示顶点的结构体中。,#def
26、ine MAXN 100 struct ArcNode /边节点 int adjvex;/边的另一个邻接点的序号 ArcNode *nextarc;/指向下一个边节点的指针 ; struct VNode/顶点 int data;/顶点信息 ArcNode *head1;/出边表的表头指针 ArcNode *head2;/入边表的表头指针 ; struct LGraph /图的邻接表存储结构 VNode vertexsMAXN;/顶点数组 int vexnum, arcnum;/顶点数和边(弧)数 ; LGraph lg;/图(邻接表存储),采用邻接表存储图时构造有向图的方法,void Crea
27、teLG( ) /采用邻接表存储表示,构造有向图G int i = 0;/循环变量 ArcNode *pi;/用来构造边链表的边结点指针 int v1,v2;/有向弧的两个顶点 lg.vexnum = lg.arcnum = 0; scanf( %d%d, /初始为空,构造有向图G可以采取全局函数CreateLG( )实现,代码如下: (在CreateLG( )函数中,约定:构造邻接表时,先输入顶点个数和边数,然后按“起点 终点”的格式输入每条有向边),for( i=0; iadjvex = v2; pi-nextarc = lg.vertexsv1.head1;/插入链表 lg.vertex
28、sv1.head1 = pi; pi = new ArcNode;/假定有足够空间 pi-adjvex = v1; pi-nextarc = lg.vertexsv2.head2;/插入链表 lg.vertexsv2.head2 = pi; /end of for /end of CreateLG,释放各顶点边链表中的边结点,void DeleteLG( ) /释放图G的邻接表各顶点的边链表中的边结点所占的存储空间 int i;/循环变量 ArcNode *pi;/用来指向边链表中各边节点的指针 for( i=0; inextarc; delete pi ; pi = lg.vertexsi.
29、head1; pi = lg.vertexsi.head2; while( pi!=NULL )/释放第i个顶点入边表各边结点所占的存储空间 lg.vertexsi.head2 = pi-nextarc; delete pi; pi = lg.vertexsi.head2; ,使用完有向图G的邻接表后,应该释放图G各顶点的边链表中的所有边结点所占的存储空间,可以使用DeleteLG( )函数实现。,例1.3 用邻接表存储有向图,并输出各顶点的出度和入度。,输入描述: 输入文件中包含多个测试数据,每个测试数据描述了一个无权有向图。每个测试数据的第一行为两个正整数n和m,1 n 100,1 m 5
30、00,分别表示该有向图的顶点数目和边数,顶点的序号从1开始计起。接下来有m行,每行为两个正整数,用空格隔开,分别表示一条边的起点和终点。每条边出现一次且仅一次,图中不存在自身环和重边。输入文件最后一行为0 0,表示输入数据结束。,输出描述: 对输入文件中的每个有向图,输出两行:第1行为n个正整数,表示每个顶点的出度;第2行也为n个正整数,表示每个顶点的入度。每两个正整数之间用一个空格隔开,每行的最后一个正整数之后没有空格。,第二种输入方式!,样例输出: 1 3 1 1 2 1 0 0 2 2 1 2 1 1 1 4 0 2 1 2 3 1,样例输入: 7 9 1 2 2 3 2 5 2 6 3
31、 5 4 3 5 2 5 4 6 7 4 7 1 4 2 1 2 2 2 3 2 3 4 2 4 3 0 0,分析: 用邻接表存储图,可以表示重边和环的情形。例如,样例输入中第2个测试数据所描述的有向图及对应的邻接表如图1.22所示。,在图(a)所示的无向图中,有向边为环,对应到图(b)所示的邻接表中,顶点1的入边表和出边表都有一个边结点,其adjvex分量也为1。另外,在图(a)所示的无向图中,和为重边,对应到图(b)所示的邻接表中,顶点1的出边表中,有两个边结点的adjvex分量均为2。,统计第i个顶点的出度的方法是在其出边表中统计边结点的个数,统计第i个顶点的入度的方法是在其入边表中统计
32、边结点的个数。,#include #include #define MAXN 100 struct ArcNode /边结点 int adjvex;/边(弧)的另一个邻接点的序号 ArcNode *nextarc;/指向下一个边结点的指针 ; struct VNode/顶点 int data;/顶点信息 ArcNode *head1;/出边表的表头指针 ArcNode *head2;/入边表的表头指针 ; struct LGraph /图的邻接表存储结构 VNode vertexsMAXN;/顶点数组 int vexnum, arcnum;/顶点数和边(弧)数 ; LGraph lg;/图(邻接表存储),void CreateLG( ) /采用邻接表存储表示,构造有向图G int i = 0;/循环变量 ArcNode *pi;/用来构造边链表的边结点指针 int v1, v2;/有向弧的两个顶点 for( i=0; iadjvex = v2; pi-nextarc = lg.vertexsv1.head1;/插入链表 lg.vertexsv1.head1 = pi; pi = new ArcNode;/假定有足够空间 pi-adjvex = v1; pi-nextarc = lg.vertexsv2.h
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026八年级道德与法治下册 对外开放的基本国策
- 2026四年级道德与法治上册 变废为宝创意实践
- 2026九年级上名著导读简爱
- 2026 北师大版三年级语文风筝第二课时教学课件
- 2026六年级道德与法治下册 自强精神弘扬
- 2026苏教版应用广角统计应用实践
- 护理教育的新趋势
- 护理实践中的社会支持与资源利用
- 2026年云南色彩模拟考试试题及答案
- 2026年物联网技术在智慧城市建设中的应用探讨考试及答案
- ESG基础知识培训课件
- 法律效应的婚内保证书
- 育肥猪场月度汇报
- 多重耐药感染临床案例深度剖析
- 北京大学2022年强基计划笔试数学试题(解析版)
- 2024-2025学年清华大学版(2024)A版初中信息科技八年级下册(全册)知识点复习要点归纳
- 五年级下册数学期中必考易错题应用题六大类
- 密闭式静脉输血操作流程
- 审计案例第2章审计风险评估案例
- 2025年中国菠菜种植行业市场全景评估及发展战略规划报告
- 中国食物成分表标准版第6版
评论
0/150
提交评论