拓扑排序
小胡同的诗
千里之行,始于足下
展开
-
HDU1285确定比赛次序(拓扑排序+堆)
解题思路:裸拓扑排序 ,由于要输出字典序最小的ans,所以用堆作容器,复杂度由原来的O(V+E)变为O((V+E)*logV),题中输入的数据都符合DAG 的要求,所以不必判环。解题细节拓扑排序写法:初始化:将入度为0的节点V入队将入度为0的节点加入排序结果集中删除与入度为0的节点相连的边删除,相连的边入度-1将跟新边后入度为0的节点入队AC代码:#include <c...原创 2019-02-04 18:27:30 · 170 阅读 · 0 评论 -
HDU3342Legal or No(拓扑排序判环)
题目链接:HDU3342题目大意:给一个n个点m条边的有向关系图,问这图中是否存在环,即判断是否是DAG 。解题思路:拓扑排序判环模板题AC代码:#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <iostream>...原创 2019-02-04 23:55:44 · 447 阅读 · 0 评论 -
HDU2647Reward(拓扑排序+反向建图思维)
题目链接:HDU2647题目大意:给一张n节点m条边的图,(n<=10000,m<=20000)。并且要求每次输入的u,v节点 v的价值大于u的价值。最终输出总价值的最小值。解题思路:利用拓扑排序输出的序列价值要递增比较容易建图,这张m边有向图边的方向满足 (v,u):u的价值大于v的价值 这样一个偏序关系。关键点在于 反向建图 。AC代码:#include <cstd...原创 2019-02-05 14:38:02 · 196 阅读 · 0 评论 -
蓝桥杯--小朋友崇拜圈(有向图求最大环)
题目描述班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己)。在一个游戏中,需要小朋友坐一个圈,每个小朋友都有自己最崇拜的小朋友在他的右手边。求满足条件的圈最大多少人?小朋友编号为1,2,3,…N输入第一行,一个整数N(3<N<100000)接下来一行N个整数,由空格分开。要求输出一个整数,表示满足条件的最大圈的人数。测试样例输入:93 4 2 ...原创 2019-03-23 21:16:03 · 1706 阅读 · 0 评论 -
dfs求拓扑排序+判环
前言什么是拓扑排序?一个感性的认识是某个开关触发必要的先行条件。例如:一个串联电路形成回路的先行条件是:1,导线联通;2,每个串联分支上联通。假如划分为多个串联分支上也有一个串联路径(实际上就是一条线上串着许多电元件),则整个串联分支联通就递归到多个子分支。根据上面的描述不难发现这是一个递归的过程,我们应用到图论基于DFS求拓扑排序的思想也类似。综上描述,拓扑排序就是一个图上的遍历序列,序列满...原创 2019-08-26 23:02:03 · 1442 阅读 · 0 评论 -
7.8 DAG上的多源最短(长)路径问题(动态规划)
目录前言图模型算法DAG最短路描述实现DAG最长路描述实现DAG所有顶点对之间的最短路描述实现抽象图模型二维矩形嵌套分析思路1(转为DAG上最长路)思路2(转为LIS问题)硬币问题思路完全背包比较记忆化搜索递推打印路径补充n维矩形嵌套问题总结前言首先要知道什么是DAG,有向无环图,可以求拓扑排序,关键路径,在工程规划上有很大的用处。如果发现某个问题给的前提是DAG,那么,根据DAG的无圈性,...原创 2019-09-04 13:56:17 · 1459 阅读 · 0 评论