看到拓扑排序感觉非常遥远的复杂,不喜欢图。看了拓扑排序的原理,很像广搜。 以本题样例为例: 了解一下 出度 和 入度 5的出度为3 入度为 0 ,3的出度为2 入度为2…… for循环 找到秃头 5 入队列, 然后给跟他有联系的所有点一一剃头,看谁再秃,秃了入队列,再对继往开来的秃子进行操作。 #i ...
分类:
编程语言 时间:
2020-06-17 10:46:50
阅读次数:
56
import java.util.*;/** * 图的拓扑排序 * 1)从图中找到所有入度为0的点输出 * 2)把图中入度为0的点删掉,继续寻找入度为0的点输出,周而复始 * 3)图的所有节点被删除后,依次输出的顺序就是拓扑排序 * 要求:有向图且无环 * 应用:事件安排、编译顺序 */public ...
分类:
编程语言 时间:
2020-06-14 11:10:17
阅读次数:
61
思考了挺久的一题,主要卡在建图这一块,序列上的问题很难想到图论上。。 可以交换位置是一种关系,那么不能交换也是一种关系:两个不是朋友的点,相对位置保持不变! 不能交换的关系的两点就可以连边,在图上u->v就表示u一定在v前面 但是这样暴力建图显然会炸,我们再进行优化: 我们把动物i(设物种x)和其后 ...
分类:
编程语言 时间:
2020-06-14 00:58:46
阅读次数:
69
动态规划的引入 P4017 最大食物链计数【拓扑排序的条数计算】 ...
分类:
编程语言 时间:
2020-06-13 21:03:07
阅读次数:
53
概念定义: 深度优先遍历:深度优先遍历是图论中的经典算法。其利用了深度优先搜索算法可以产生目标图的相应拓扑排序表,采用拓扑排序表可以解决很多相关的图论问题,如最大路径问题等等。 根据深度优先遍历的特点我们利用Java集合类的栈Stack先进后出的特点来实现。我用二叉树来进行深度优先搜索。 广度优先遍 ...
分类:
编程语言 时间:
2020-06-07 21:24:16
阅读次数:
77
题意: 给n,m个,给出n个字符串,再给出m个s1,s2,要求s1在s2之前,最小字典序排列,如果不符合就 1 思路: 拓扑排序,但如果用字符串来优先队列中一直tle,呜呜呜,然后又加上博客没有拓扑排序模板,我居然拓扑排序写错了,导致tle的原因 真正的思路,是先字典序排序,然后优先队列拓扑排序。 ...
分类:
编程语言 时间:
2020-05-24 15:13:31
阅读次数:
82
1 与课程表那个题很类似,建立图的邻接表和度数表,每次遍历度数为1的点,每遍历一个就更新度数表,并判断更新的点度数是否变为1了,如果为1了,则下一轮遍历,最后一轮遍历的即为结果,这个题和拓扑排序课程表类似,关键是对节点的度的理解,对图问题,一定要学会建邻接表和度数表, 310. 最小高度树 ...
分类:
其他好文 时间:
2020-05-18 16:30:49
阅读次数:
62
问题1.判断有没有环 http://hihocoder.com/problemset/problem/1174 用vector模拟邻接表,开一个记录入度的一维数组,一个存储入度为0的队列 ac代码如下 #include<iostream> #include<algorithm> #include<v ...
分类:
编程语言 时间:
2020-05-15 17:39:42
阅读次数:
65
拓扑排序 拓扑序列: 设G=(V,E)是一个具有n个顶点的有向图,V中顶点序列V1,V2,......,Vn满足若从顶点Vi到Vj有一条路径,则在顶点序列中顶点Vi必须在顶点Vj之前。则称这样的顶点序列为一个拓扑序列 拓扑排序 对一个无环有向图(AOV网)构造拓扑序列的过程 方法 从AOV网中选择一 ...
分类:
编程语言 时间:
2020-05-11 01:09:59
阅读次数:
72
题意: 一个n个节点的有向图,节点标号从1到n,存在m条单向边。每条单向边有一个权值,代表翻转其方向所需的代价。求使图变成无环图,其中翻转的最大边权值最小的方案,以及该方案翻转的最大的边权。 Input 单组输入,第一行包含两个整数n和m(2≤n≤100 000,1≤m≤100 000) 接下来m行 ...
分类:
编程语言 时间:
2020-05-09 21:40:08
阅读次数:
69