图论-Tarjan
AcerMo
一只辣鸡大学生
展开
-
BZOJ1179&&洛谷P3627 [APIO2009]抢掠计划
很显然一个点可以去若干次的意思就是你可以把一个环抢完,那么肯定是要缩点,缩完点之后,显然就是单源最长路呗,拓扑排序或spfa乱搞就ok了,没啥难度代码//By AcerMo#include<cmath>#include<stack>#include<queue>#include<cstdio>#include<vector&...原创 2018-08-03 16:44:46 · 272 阅读 · 0 评论 -
BZOJ1093&&洛谷P2272 [ZJOI2007]最大半连通子图
tarjan缩点+拓扑最长链+类似于SPFA统计方案代码//By AcerMo#include<queue>#include<stack>#include<cmath>#include<cstdio>#include<vector>#include<cstring>#include<iostrea...原创 2018-07-31 15:30:38 · 253 阅读 · 0 评论 -
洛谷P1726上白泽慧音
裸的tarjan缩点,不要管双向边,你就把他看成两条单向边就行了代码//By AcerMo#include<cmath>#include<stack>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using n...原创 2018-08-15 08:45:24 · 221 阅读 · 0 评论 -
BZOJ1123&&P3469 [POI2008]BLO-Blockade
不难发现,一个点对其他点有影响,他必然是割点,然后就Trajan+乘法原理就行了代码//By AcerMo#include<cmath>#include<stack>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>...原创 2018-08-16 20:01:11 · 211 阅读 · 0 评论 -
洛谷P4782 2-SAT【模板】
2-SAT是一类非常有趣的问题,他会给你一堆形如 i true/false j true/false的条件,表示选a必须选b或者必须不选b,反之亦然求解方法是用到的拆点+tarjan,我们把一个点拆为选 i 和不选 i+n,然后分别于j的反状态连边,若存在满足条件的状态,那么他在图中表示出来肯定是一条链,否则i和i+n就会同时出现代码//By AcerM...原创 2018-08-22 17:05:30 · 289 阅读 · 1 评论 -
BZOJ2438&&洛谷P4819 [中山市选]杀人游戏
BZOJ怎么还没被和谐我们不难发现把图缩点后,找一个安全的点询问,就可以遍历整个连通分量,若这个联通分量的度数不为0,那他就可以等其他的连通分量来干掉他,所以我们缩完点后,判断有多少个度数为零的连通分量,这是必须要问的个数,然后还有一个小特判,自己意会吧,就是若一个连通分量里,只有一个点,然后他没有出边,假如有两个连通分量都指向了他,只需要验证一个点,就可以判断这个点是不是杀手了代码...原创 2018-08-31 10:47:12 · 206 阅读 · 0 评论 -
BZOJ2208&&洛谷P4306 [JSOI2010]连通数
tarjan缩点+拓扑这道题我对拍了4K组,发现是数组开小了,CNBB一开始有一个在lg上能A在BZ上WA掉的想法(后来自己造的数据卡掉了),就是我们缩完点后,反向连边,假如a->b,那就连一条b->a的边,表示a能到b,那么拓扑的时候就可以直接将b的siz加到a上,然后自己造的数据是40010001010000110然后发现这个操作不行,就换一种写法反...原创 2018-08-28 21:46:48 · 267 阅读 · 0 评论 -
BZOJ1051&&洛谷P2341 [HAOI2006]受欢迎的牛
tarjan裸题不难发现,一个牛受所有牛欢迎,他必定是在一个环里,并且其他点都指向这个环,并且这个环不指向环以外的其他点,所以思路就很显然了,tarjan缩点,找到一个没有出度的强联通分量,然后再扫一下所有在这个联通分量里的点就好了但是你会发现你WA了,因为存在一种情况就是若干个环之间没有边,那么每个环都是出度为零,但环内的牛没有被所有牛指向,所以我们还需要统计一下出度为零的联通分量是否只...原创 2018-09-03 12:01:23 · 190 阅读 · 0 评论 -
洛谷P1262间谍网络
tarjan+DAG板题我们发现,如果一些人通过一些关系,组成了环,那么只需要收买环中花费最小的人即可得到整个环,所以我们用tarjan缩点,然后重新构图,每一个 强连通分量的花费是他当中能被收买的花费的最小值 ,然后我们得到了一张有向无环图,怎么判断是不是能被收买呢 ?我们构建新图时,将每个点的入度记录,若一个点的入度为0,但他没有被收买的最小权值 ,那么它这个间谍一定不会被收买,因为没有点指向...原创 2018-06-28 19:10:00 · 209 阅读 · 0 评论 -
BZOJ2427&&洛谷2515 [HAOI2010]软件安装
emmm一眼望过去,觉得是树形dp,但是只有40分,然后突然看到间接依赖也可以,emmmm,也就是说,如果一些物品的依赖关系是一个环,那么这个环可以选,也可以全不选。。。坑爹。所以我们要把这个环内的东西累加到一个点上,这是啥?强联通缩点啊,先跑tarjan,然后把一个环内的物品累加到一起,放在新树上,然后你以为自己能A了?不,你还是40,为啥呢?因为你都知道有环了,那么肯定有环的时候,0号点不会被...原创 2018-07-03 15:25:31 · 294 阅读 · 0 评论 -
CF732F Tourist Reform
挖坑(看看这张PPT)吧代码//By AcerMo%%%尹兄 #include<cmath>#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>using namespace std;cons...原创 2018-07-09 21:51:10 · 296 阅读 · 0 评论 -
POJ 2186
原题戳题的大意为有n头牛,某些牛喜欢另一些牛,每头牛都想成为最受欢迎的,即除他外的所有牛都喜欢他,喜欢具有传递性,所以,tarjan完了之后,显然,如果图上存在多余一个的只有入度的强连通分量,那么则无解,如果只存在一个,那么该连通分量中的所有牛都是最受欢迎的。tarjan强连通分量+缩点代码By Acer.Mo#include<algorithm>#include<iostre...原创 2018-03-30 21:33:35 · 175 阅读 · 0 评论 -
POJ 2553
原题戳题目大意,n个点,m条边的的有向图,存在一种点,sink点,他的含义为,一个点能到的点,反过来能到他,则这个点为sink点,tarjan缩点裸题,求完强连通分量后,for循环一遍,出度为零的联通分量里的所有点都是sink点。PS 记得是升序输出,别忘了sort,或者直接压进priority_queue里代码By Acer.Mo#include<algorithm>#includ...原创 2018-03-30 21:42:35 · 350 阅读 · 0 评论 -
CF427C Checkposts
题意,你有n个城市,m条有向边,你现在想把这些城市保护起来,一个城市被保护,当且仅当本城市内有警察,或者有能和他相互到达的城市内有警察,在一个城市内部署警察有一个各自花费ci,你需要编程来解答在花费最少的情况下需要花费多少钱,花费钱数最少的情况有多少种显然这是一道有向tarjan强连通缩点,在一个强连通分量里的所有点只要有一个被保护,其他的必定都被保护,那么我们只需要记录一下每一个强连通分量里最小...原创 2018-06-20 19:41:00 · 236 阅读 · 0 评论 -
POJ2762 Going from u to v or from v to u?
题目大意,有一个n个点,m条有向边的图,问你这幅图是不是一个单向联通的图,就是说一条路径不回头的走到终点很简单的一道tarjan缩点+拓扑先按强连通缩点,因为一个强连通里的点可以绕圈,缩完点后得到一张无环的有向图,如何判断是不是单向联通呢?开始的时候把所有入度为零的点压进队列后,如果有队列内的元素个数大于1,那么直接输出no因为如果两个点都只有出边,那么这两个点无法相互到达,然后每次有元素出队列时...原创 2018-06-20 20:25:28 · 229 阅读 · 0 评论 -
POJ 1236 NetWork
题目大意,你有n台电脑,m条网线,你需要用网线下传东西,网线是单向的,问你最少需要从几台电脑开始下放可以使所有的电脑收到文件,需要最少再连几条网线,可以使所有文件共享思路tarjan缩点裸题,缩完点后,有一个很显然性质,每个强连通分量里的点可以相互传文件,所以我们缩完点后记录一下每个强连通的father出入度,如果一个fa的in是0,那么显然需要从这个点下方文件,记录出度干什么呢?我们通过画图不难...原创 2018-06-20 20:58:26 · 143 阅读 · 0 评论 -
洛谷P3387缩点裸题
题意不再赘述有向图跑完tarjan缩点之后,就是一张有向无环的DAG,那么求一条点权最大的路径就可以在拓扑图上跑最长路径,然后在每个点出栈的时候,更新答案,答案就有了2333代码//By AcerMo#include<cmath>#include<stack>#include<queue>#include<cstdio>#include<...原创 2018-06-20 17:07:31 · 247 阅读 · 0 评论 -
CF402E Strictly Positive Matrix
学长说判是不是强连通图就行,然后我就判了,然后就A了,emm有学长是真的可以猥琐yuwei啊,啊哈哈哈哦对,题意:给一个n*n的矩阵A,每个元素都非负,且图中存在一个自环,判断是不是存在一个整数k使得A^k的所有元素大于0代码//By AcerMo%%%尹兄 #include<cmath>#include<stack>#include<cstdio>#i...原创 2018-07-09 20:56:23 · 250 阅读 · 0 评论 -
CF949C Data Center Maintenance
题意有n个信息中心,第i个信息中心要在第ti时刻维护,每个用户都将资料存档在了两个中心,你现在要选一个最小的集合,使得维修时间推迟一小时后,用户还能获得信息思路 对于每对冲突的点连边,然后求强连通分量,答案就是缩点后度数为零且最小的SCC代码//By AcerMo%%%尹兄 #include<cmath>#include<stack>#include<cstdi...原创 2018-07-09 21:18:35 · 217 阅读 · 0 评论 -
BZOJ2430&&洛谷P3225[HNOI2012]矿场搭建
无向图tarjan求割点很显然,我们求出所有联通分量后,若这个联通分量内有1个割点,那么只能在这个点上建出口,因为这个点坏了其他点就出不去了2+个割点,那么这个联通分量是安全的,因为其中一个坏了还能走另一个0个割点,那么这个联通分量至少需要两个出口,否则也无法出去然后方案数就根据上面这些乱搞一下就好了代码//By AcerMo#include<cmath>#inclu...原创 2018-09-25 14:53:17 · 256 阅读 · 0 评论