随笔分类 - DAG
摘要:题目链接:https://www.luogu.com.cn/problem/P6154 拓扑排序+快速幂求逆元 AC代码: 1 #include<cstdio> 2 #include<iostream> 3 #include<queue> 4 #include<cstring> 5 using na
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/description/344/ 这道题看起来像用SPFA的单源最短路,但是经过了特殊处理,SPFA会被卡。 所以就用到了缩点+拓扑最短路。 道路是无向的,所以可以将整个图分成若干个连通块,然后将这些连通块缩成点
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P1807 因为并没有保证1点的入度没有保证为0,所以先将所有的点的dis为0xc0,然后dis[1]=0,dis[n]=-INF。将所有连向1的点的w都设为-100001,这样拓扑到1这个节点时,dis就会被更新为0,然后
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P1137 在有向无环图上,用拓扑排序在O(n)的时间内求出最短/长路,是一个不错的选择(也称拓扑的DP)。 只需要在拓扑排序中让连的点的入度--时更新dis即可。这道题里注意一开始每一个城市都可以以自己为终点到达自己一个,
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P2661 (最大环:https://www.luogu.com.cn/problem/P5145) 用拓扑排序,将能在拓扑队列中的所有点删掉,即这些点不能在环中,判环。 然后找出在环中的点,进行DFS,搜一遍环看它的sum
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P5145 用拓扑排序,将能在拓扑队列中的所有点删掉,即这些点不能在环中,判环。 然后找出在环中的点,进行DFS,搜一遍环看它的sum,取max AC代码: 1 #include<cstdio> 2 #include<ios
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P3243 因为对于每一个<x,y>,x一定要在y之前做,所以考虑要让y小的在前面,即在合法范围内让后面的y尽可能大,也就是反序列字典序最大的情况。 所以反向建边,跑一边拓扑排序,并用大根堆替换队列(因为要字典序最大)。并且
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P1137 拓扑排序+DAG上的DP,用拓扑将图变成线性的拓扑序,然后DP求最长路即可。 AC代码: 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4
阅读全文
摘要:这是一道存图+拓扑排序的题,但是看了一晚上好像只看出存图来.... 下面说一下自己的理解的思路: 首先对这个题要有正确的理解: 1. 给出的一趟车,它所停靠的站点一定 >= 它所经过站点中级别最小的点一定 >= 起始点和终点; 2. 所有停靠的点的级别一定 > 未停靠的点; 3. 根据大于关系建立有
阅读全文