图论
爱莉我老婆
Java萌新算法选手一枚,去过蓝桥国赛。励志补全Java版本的算法模板
展开
-
拓扑排序之车站分级
思路是这样的,我们把所有列车为停靠的车站指向已经停靠的车站,在这里,我们要记住去重,然后我们记录这些车站的先后关系。设置分级数组,默认每个车站的等级是一级,然后我们开始拓扑排序,a号车站链接的b号车站的等级等于b号的等级和a号车站的等级加1做对比取最大。由于Java速度的局限性,即使我写了基础的快读快输,仍然在第8个样例点处tle。为什么呢,原因很简单,要最小的分级数量,那么我们就加一即可。大家可以自行去洛谷下载来验证。原创 2023-10-14 16:27:13 · 166 阅读 · 0 评论 -
拓扑排序求最长路
正常来讲,我们应该把1号节点入队列,再出队列,把一号节点能到达的所有的点的入度减一,并且将这些点求到达一号节点的最大距离。举个例子,一号和二号点有三条路径分别为1,2,3,我们放进队列里后,会先后跑这三段长度最后取得最优。由于3号节点还有一条入度,而2号节点我们没有初始化放入,即使他的入度为0也不能进入队列,所以3号节点无法到达,但实际1号节点可以到达3号节点,解决方法就是首先把非1号的所有的入度为0的节点先入队列,然后排除干扰,最后就可以按照原步骤进行了。这种情况下我们初始时期是只存入了一号节点所置。原创 2023-10-12 20:24:44 · 274 阅读 · 0 评论 -
拓扑排序的应用之杂务
这个题我们要完成一个任务前要完成前置任务,我们把路径条数换成完成这个任务的时间就是答案。拓扑排序简单应用就是找到到达一个点有几条路径。本题使用拓扑排序,在这里简单说一下思路。原创 2023-10-09 21:41:27 · 78 阅读 · 0 评论 -
拓扑排序的算法模板
拓扑排序输出序号的规则(拓扑排序的实现),首先我们找到入度为0的点,然后把它输出并删掉,之后把与他直接相连的点的入度减去1,并找到入度为0的点,接着把这个输出并删除。之后把与他相连的点的入度减去1.直到把所有点输出为止。原理就是我们首先找到一个入度为0的点,它前面没有任何其他点,因为入读为0吗。由于我们在删除这个点时会删除与他直接相连的边,而每一条边都是一条路径,所以我们把起点赋值为1代表从起点开始只有一条路径,之后每删一条边时我们便在这条被删的边的另一个点加上前一个点的路径数。最后我们输出终点的路径数。原创 2023-08-17 17:21:44 · 125 阅读 · 0 评论