拓扑排序
hesorchen
这个作者很懒,什么都没留下…
展开
-
洛谷P1137旅行计划
题目 题目链接 解题思路 拓扑排序+DP求以v为终点的最长路径。 (拓展:反向建图可以求以v为起点的最长路径) AC代码 #include <bits/stdc++.h> using namespace std; struct node { int v, next; } edge[200010]; int degree[100010]; int vis[100010]; int dp[100010]; int head[100010], ct = 1; void add(int u,原创 2021-04-09 15:33:38 · 233 阅读 · 0 评论 -
UVA437巴比伦塔
题目 原题链接 巴比伦人有n种长方形方块,每种有无限个,第i种方块的三边边长是xi,yi,zi。对于每一个方块,你可以任意选择一面作为底,这样高就随着确定了。举个例子,同一种方块,可能其中一个是竖着放的,一个是侧着放的,一个是横着放的。 他们想要用堆方块的方式建尽可能高的塔。问题是,只有一个方块的底的两条边严格小于另一个方块的底的两条边,这个方块才能堆在另一个上面。这意味着,一个方块甚至不能堆在一个底的尺寸与它一样的方块的上面。 解题思路 对于每种长方体,总共有三种摆放方式 尺寸相同且摆放方式相同的长方体原创 2021-04-09 11:02:22 · 345 阅读 · 0 评论 -
拓扑排序用bitset处理相同排名的集合
前言 拓扑排序可以在有向无环图中以偏序求出全序,但是在一些图中,有些结点的rank是一样高的,(除非题目有特殊说明,编号小的rank高等情况),这样是不能求出正确的rank的。这时候,我们可以加入bitset,用bitset处理相同rank的结点集。 bitset 使用头文件 bitset bitset类似于一个bool类型的数组,存放着01。可以在定义的时候进行初始化操作,可以用下标进行访问,也是从0开始,并且从默认最右边的一位为[0](结合二进制数,其实很人性化),定义、访问及初始化方法如下: int原创 2020-08-24 20:31:51 · 3500 阅读 · 0 评论 -
拓扑排序
拓扑排序 拓扑排序 百度百科:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。 拓扑排序的操作: 找到图中入度为0的一个点。 删除该点和该点连接的边。 循环一二步原创 2020-08-06 10:36:20 · 5496 阅读 · 0 评论