YbtOJ 强连通分量课堂过关 例1 有向图缩点【Tarjan】【DP】【拓扑排序】

在这里插入图片描述


思路

这道题首先搞一个 T a r j a n Tarjan Tarjan,求出所有强连通分量。
然后就缩点,具体做法是枚举每条边然后判断这条边上的点在不在同一个强连通分量上,不在就连边。
然后就做一个DP+拓扑排序,边拓扑边DP, f [ y ] = max ⁡ ( f [ y ] , f [ x ] + c n t [ y ] ) f[y]=\max(f[y],f[x]+cnt[y]) f[y]=max(f[y],f[x]+cnt[y]);

代码

#include
#include
#include
#include
using namespace std;
int stack[100010],dfn[100010],low[100010],cnt[100010],tail,sc;
int tot,hd

你可能感兴趣的:(题解,YbtOJ专项练习题,#,强连通分量)