随笔分类 - 图论篇
发表于 2022-01-10 11:34阅读:51评论:0推荐:0
摘要:二分图 // 阿姨派单 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.*; /** * 请在此类中完成解决方案,实现process完成数据的处理逻辑。
阅读全文 »
发表于 2018-06-09 20:01阅读:426评论:0推荐:0
摘要:简介: 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。 操作: 1、init(),首先将所有元素初始化,每个元素作为一个集合 1、find(x):查找元素x 所在的集合的代表,该操作也可以用于判断两个元素是否位于同一个集合 2、merge(x,y)
阅读全文 »
发表于 2018-06-07 00:45阅读:6119评论:0推荐:0
摘要:最小生成树概念: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。最小生成树其实是最小权重生成树的简称。 prim: 普里姆算法(Prim算法),图论中
阅读全文 »
发表于 2018-06-07 00:17阅读:2884评论:0推荐:1
摘要:简介: dijkstra算法解决图论中源点到任意一点的最短路径。 算法思想: 算法特点: dijkstra算法解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。 算法的思路 dijkstra算法采用的是一种贪心的策略,声明一个
阅读全文 »
发表于 2018-06-06 23:56阅读:150评论:0推荐:0
摘要:简介: 给定一个图和一个源点,求源点到其余点的最短路径,图中有可能存在负权边。 算法步骤 1.初始化:将除源点外的所有顶点的最短距离估计值 dist[v] ← +∞, dist[s] ←0; 2.迭代求解:反复对边集E中的每条边进行松弛操作,使得顶点集V中的每个顶点v的最短距离估计值逐步逼近其最短距
阅读全文 »
发表于 2018-06-06 23:39阅读:184评论:0推荐:0
摘要:简介: 算法的特点: 弗洛伊德算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或有向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭 包。 算法思想: 通过Floyd计算图G=(V,E)中各个顶点的最短路径时,需要引入两个矩阵,矩阵S中的元素a[i][j]表示
阅读全文 »
发表于 2018-06-06 21:05阅读:748评论:0推荐:0
摘要:概念: 容量网络:设G(V,E),是一个有向网络,在V中指定了一个顶点,称为源点(记为Vs),以及另一个顶点,称为汇点(记为Vt);对于每一条弧<u,v>属于E,对应有一个权值c(u,v)>0,称为弧的容量.通常吧这样的有向网络G称为容量网络. 弧的流量:通过容量网络G中每条弧<u,v>,上的实际流
阅读全文 »
发表于 2018-04-18 17:26阅读:134评论:0推荐:0
摘要:题目链接 Problem Description Senior Pan fails in his discrete math exam again. So he asks Master ZKC to give him graph theory problems everyday.The task i
阅读全文 »
发表于 2018-04-16 21:17阅读:118评论:0推荐:0
摘要:题目链接 畅通工程,可以用dijkstra算法实现。 听说spfa很好用,来水一发 邻接矩阵实现: 邻接表实现: vector存储:
阅读全文 »
发表于 2018-01-09 17:02阅读:146评论:0推荐:0
摘要:次小生成树,顾名思义,求最小生成树之外的最小生成树,即倒数第二小的生成树。 先利用prim求出最小生成树。并将最小生成树任意两点之间路径当中的权值最大的那一条找出来,为什么要找最大的呢,因为生成树再加入一条边之后一定构成了回路,那么肯定要去掉这个回路当中一条边才是生成树,那么,怎么去边才是次小的,那
阅读全文 »