
拓扑排序
Park Corsa
吃早餐,多运动,不熬夜,常反思
展开
-
洛谷P1347 排序
传送门读完会发现这题很明显是一个缝合怪,给你一张图,让你在线做三个任务:1.判断所有点是否能构成一条链(不考虑其他多余边)2.判断是否有环 3.没有1、2就输出Sorted sequence cannot be determined.任务1: 乱搞(我用的dfs,大佬们有更加优雅的做法请自便)任务2:用拓扑排序判断以下所有点是否都遍历过任务3:会前面2个任务你就会这个任务了以下为可忽略内容:用short卡了空间请大佬轻喷(结果还没卡到最优解)因为数据规模太小,所以代码写的很丑,可能常数很大c原创 2021-08-15 21:06:16 · 164 阅读 · 0 评论 -
洛谷P1137 旅行计划
传送门继续复习拓扑排序……首先X在Y西面即X向Y连接了一条有向边,不考虑“地球是圆的”的情况下,我们可以判断这是一个DAG用f[i]f[i]f[i]直到路线上点iii经过点数最大值,那么对f[i]f[i]f[i]产生贡献的点,也一定是对iii的入度产生贡献的点,于是有了利用拓扑排序的状态转移方程:f[i]=max(f[i],f[j]+1),∃edge:j→if[i]=max(f[i],f[j]+1),\exist edge:j\rightarrow if[i]=max(f[i],f[j]+1),∃e原创 2021-08-14 23:03:52 · 214 阅读 · 0 评论 -
洛谷P1038 [NOIP2003 提高组] 神经网络
传送门首先吐槽一下出题人的语文水平,读题真的很难受看到题面能够明显意识到这是一个DAG,需要按优先级计算状态,于是考虑借助拓扑排序来完成计算注意一个细节:输入层的阈值没有用#include<bits/stdc++.h>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,原创 2021-08-14 17:44:39 · 335 阅读 · 0 评论 -
[FROM LUOGU]逛公园
传送门SOL这道题的记忆化搜索、最短路DP有很多被卡了的,原因在于没有考虑0边不在路径上的情况,或者按照0边建图跑拓扑导致非0环上的点被误伤这个分层图(其实还是DP)的做法没有被卡:跑拓扑我们在最短路边集(所有dis<=K的路径上的边)上进行(当然你得先跑正反图的最短路)那么显然非0环至少有一条边不会被加进去,而0环会,这也就是导致−1-1−1的原因,所以跑完拓扑判断一下有没有入...原创 2019-10-28 16:40:19 · 132 阅读 · 0 评论 -
[FROM WOJ]#3728 表格
#3728 表格传送门SOL显然拓扑。对于每一行的正数升序排序,按列的原编号顺次连边。显然会重复,如2 2 3 3。显然,对于相同的值,没有必需的拓扑序,可以随便排。于是可以考虑在2 2和3 3之间加虚点,各自向虚点连边。然后跑Topsort。代码:#include<bits/stdc++.h>using namespace std;#define N 5000...原创 2019-10-21 08:12:45 · 144 阅读 · 0 评论 -
[FROM LUOGU][ZJOI2007]最大半连通子图
[ZJOI2007]最大半连通子图传送门SOL题意:在有向图G当中找到最长链,并且统计最长链数量取模Tarjan求了SCC之后,对于每一个连通分量,其中的点都可以两两到达,缩点之后可以保证图上只剩下链对于新图,可以考虑按拓扑序DP设num[i]表示i为链底的最长链长度,dp[i]表示i为链底的最长链个数,siz[i]表示原图i对应的连通分量大小当搜索到u->v的路径时:如果n...原创 2019-10-21 08:08:43 · 142 阅读 · 0 评论