拓扑排序
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 · 234 阅读 · 0 评论 -
UVA437巴比伦塔
题目原题链接巴比伦人有n种长方形方块,每种有无限个,第i种方块的三边边长是xi,yi,zi。对于每一个方块,你可以任意选择一面作为底,这样高就随着确定了。举个例子,同一种方块,可能其中一个是竖着放的,一个是侧着放的,一个是横着放的。他们想要用堆方块的方式建尽可能高的塔。问题是,只有一个方块的底的两条边严格小于另一个方块的底的两条边,这个方块才能堆在另一个上面。这意味着,一个方块甚至不能堆在一个底的尺寸与它一样的方块的上面。解题思路对于每种长方体,总共有三种摆放方式尺寸相同且摆放方式相同的长方体原创 2021-04-09 11:02:22 · 345 阅读 · 0 评论 -
拓扑排序用bitset处理相同排名的集合
前言拓扑排序可以在有向无环图中以偏序求出全序,但是在一些图中,有些结点的rank是一样高的,(除非题目有特殊说明,编号小的rank高等情况),这样是不能求出正确的rank的。这时候,我们可以加入bitset,用bitset处理相同rank的结点集。bitset使用头文件 bitsetbitset类似于一个bool类型的数组,存放着01。可以在定义的时候进行初始化操作,可以用下标进行访问,也是从0开始,并且从默认最右边的一位为[0](结合二进制数,其实很人性化),定义、访问及初始化方法如下:int原创 2020-08-24 20:31:51 · 3502 阅读 · 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 评论