
图论
文章平均质量分 62
图论
梦中醉卧惊起
这个作者很懒,什么都没留下…
展开
-
L2-001 紧急救援 (25 分)
文章目录L2-001 紧急救援 (25 分)AC代码 L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。 输入格式: 输入第一行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0 ~ (N−1原创 2022-03-16 00:26:06 · 215 阅读 · 0 评论 -
二分图 (染色法,最大匹配)
文章目录二分图染色法判定二分图二分图的最大匹配 二分图 二分图就是每条边的两个点都可以分到两个不同的集合 考点:1.通过染色法判断是否为二分图2.找寻最大匹配 概念: 实例: 二分图性质: 当且仅当无向图G的每一个环的结点数均是偶数时,图G才是一个二分图。如果无环,相当于环的结点数为 0,故也视为二分图 至少有两个顶点且没有奇环(奇环:一个环中有奇数个点 染色法判定二分图 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。 请你判断这个图是否是二分图。 输入格式 第一行包含两个整数 n 和原创 2022-02-20 09:56:57 · 287 阅读 · 0 评论 -
最短生成树 (超详细大全)
文章目录最短生成树最小生成树Prim算法求最小生成树prim算法判断是否连通Kruskal算法求最小生成树 最短生成树 给定的连通无向图G=(V,E),必可选取某V-1条边与原本的V个点构成一个无环路的连通子图G1=(V,V-1),G1就是G的生成树.这V-1条边的权值和就是这个生成树的权重,权重最小的就是最小权重生成树 最小生成树 普利姆算法:维护一个集合,每次将离集合最近的点加入到集合 使用邻接矩阵存储即可 克鲁斯卡尔算法:给每一条边按照权值进行排序,然后遍历m个点 Prim算法求最小生成树 给定一个原创 2022-02-18 10:40:32 · 784 阅读 · 1 评论 -
最短路 (超详细大全)
最短路 最短路 朴素的dijkstra使用邻接矩阵来存储 堆优化的dijkstra使用优先队列和邻接链表来存储 bellman_ford使用结构体来存储边的信息+memcpy数组,对k条边进行松弛操作 spfa是bellman_ford的优化使用队列+邻接链表 floyd使用邻接矩阵进行存储+暴力遍历 Floyd算法 该算法是一种在具有正或负边缘权重(但没有负环)的加权图中找到最短路径的算法,即支持负权值但不支持负权环。 Floyd求最短路 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,原创 2022-02-18 10:37:39 · 2298 阅读 · 2 评论 -
拓扑排序 (应用)
拓扑排序 将有向无环图G的所有顶点排成一个线性序列,使图中任意两个顶点u,v,如果存在u->v,那么序列中 u一定在v前面 有向图的拓扑序列 给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。 若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。 输入格式 第一行包含两个整数 n 和 m。 接下来 m 行,每行包含原创 2022-02-18 10:31:28 · 320 阅读 · 1 评论 -
图的搜索(DFS,BFS)
图的搜索 树的重心(dfs) 题目描述 给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。 输入格式 第一行包含整数n,表示树的结点数。 接下来n-1行,每行包含两个整数a和b,表示点a和点b之前存在一条边。 输出格式 输出一个整数m,表示重心的所有的子树中最大的子树的结点数目。 数据范围 1≤n≤105 样例原创 2022-02-18 10:30:17 · 295 阅读 · 1 评论 -
图的储存 (链式前向星)
图的储存 边数和点数成正比的叫稠密图,点多边少的叫稀疏图 一个图中的所有顶点度之和相加除以二等于边数 邻接矩阵:适用于边多的图 对于无向图,邻接矩阵的第i行(或第i列)非零元素(或非∞元素)的个数正好是第i个顶点的度。 对于有向图,邻接矩阵的第i行(或第i列)非零元素(或非∞元素)的个数正好是第i个顶点的出度(或入度) int main(){ memset(G,INF,sizeof(G));//初始化数组G为INF int u, v, w; int n, m; scanf("原创 2022-02-18 10:26:10 · 616 阅读 · 0 评论