![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
本博客由南昌理工学院ACM集训队播出
文章平均质量分 92
光—暗
这个作者很懒,什么都没留下…
展开
-
缩点Tarjan
解释缩点,就是把一张有向有环图中的环缩成一个个点,形成一个有向无环图1.dfn和low的含义tarjan算法有两个核心数组:dfn和low,同样也需要一个栈,辅助存储强连通分量。dfn是“时间戳”,dfn[i]说明i点在什么时间被遍历的。low[i]是i可回溯到的最早时间戳的点的时间戳(见下面对low值的计算),默认值为dfn[i],举个例子:如果i到j有一条路径,j到i也有一条路径,那么就使max(low[i],low[j])=min(low[i],low[j])max(low[i],low[j])原创 2020-09-21 16:30:25 · 1729 阅读 · 0 评论 -
一个有趣的题目:并查集反集
本博客由南昌理工学院ACM集训队播出 赞助了大大的西瓜题目连接首先你要会并查集这道题用到了一个有趣的思想:反集就是在原数据的基础上乘2也就是再作一个集合,多出来的n~~2*n作为辅助答案 #include<iostream> using namespace std; int a[2010]; int n, m; int findd(int x) { // 查找模板 return x == a[x] ? x : a[x]=findd(a[x]); } void merg原创 2020-08-15 17:34:53 · 824 阅读 · 1 评论