tarjan
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
[HDU3861]The King's Problem(Tarjan缩点+二分图匹配)
春天的道路依然充满泥泞。原创 2016-05-26 18:48:53 · 662 阅读 · 0 评论 -
[HDU3639]Hawk-and-Chicken(tarjan+dfs)
题目描述传送门 题意:求有最多的能到达它的点的点集,第一行输出最多的能到达它的点,第二行输出所有满足最大值的点集。题解首先Tarjan缩点,之后反向建图,可以知道拥有最大值的点一定在入度为0的点里。 那么可以从每个入度为0的点出发dfs。 刚开始想的是正向建图然后递推到它的儿子,发现貌似有些混乱,于是改姿势了。 而且这题还卡格式。代码#include<iostream>#include<c原创 2016-11-01 16:22:05 · 723 阅读 · 5 评论 -
[BZOJ1051][HAOI2006]受欢迎的牛(tarjan)
题目描述传送门题解求出度为0的连通分量的个数,如果个数为1就输出这个强连通分量中点的个数,否则输出0。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int max_n=1e4+5;const int max_m=5e4+5;const in原创 2016-11-01 16:22:25 · 786 阅读 · 0 评论 -
[HDU1827]Summer Holiday(tarjan)
题目描述传送门题解首先Tarjan缩点。 Q1:求最少人数,即入度为0的点的个数。 Q2:求最小花费,需要记录每个点的最小花费,然后求入度为0的点的最小花费之和。 这个不用特判!MDZZ代码#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int max_n=105;int n,x,N原创 2016-11-01 16:21:45 · 660 阅读 · 0 评论 -
[POJ3177]Redundant Paths(tarjan求边双)
题目描述传送门 题意:给出一个无向图,求最少加多少条边,使这个图成为边双连通图。题解将所有的边双连通分量缩点,然后就能形成一个无向无环图(树)。 答案为(树中叶节点的个数+1)/2,也就是说,将叶节点每两个连一条边,使之形成环。 注意tarjan求双连通分量中,重边可以更新,但是双向边的父边不能更新。代码#include<iostream>#include<cstring>#include原创 2016-11-06 19:37:57 · 609 阅读 · 0 评论 -
[BZOJ2788][Poi2012]Festival(差分约束+floyed+tarjan)
题目描述传送门题目大意:有n个正整数X1,X2,…,Xn,再给出m1+m2个限制条件,限制分为两类: 1. 给出a,b (1<=a,b<=n),要求满足Xa + 1 = Xb 2. 给出c,d (1<=c,d<=n),要求满足Xc <= Xd 在满足所有限制的条件下,求集合{Xi}大小的最大值。题解首先差分约束建图+深搜spfa判断负环->无解 tarjan缩点,不同强连通分量里的点不影响(原创 2017-04-18 19:10:28 · 917 阅读 · 0 评论 -
[BZOJ1565][NOI2009]植物大战僵尸(tarjan+最小割)
题目描述传送门题解首先有一些保护与被保护的关系是给出的,还有就是每一排前面的点可以保护后面的点 从保护的点向被保护的点连边 可以发现,如果一个强连通分量的大小大于1,那么这个强连通分量里的所有点都不可能被打到。并且如果有一个点不可能被打到,它能到达的点也都不可能被打到 把不可能被打到的点都剔除出去,最后只可能剩下一个DAG 那么这些点是可以选择的,但是选择某一个点的前提是,所有保护它的点都被原创 2017-03-04 19:07:52 · 784 阅读 · 0 评论 -
[BZOJ2707][SDOI2012]走迷宫(tarjan+概率期望+高斯消元)
题目描述传送门题解刚开始题意理解错了…或者说我对期望的理解本来就不是很好… 首先考虑图是一个DAG的情况 如果除了终点之外还有出度为0的点,那么答案为INF(因为有概率不走到终点) 然后令f(i)f(i)表示从点i走到终点的期望步数,那么f(i)=∑(i,v)∈E(f(v)+1)∗out(i)f(i)=\sum\limits_{(i,v)\in E}(f(v)+1)*out(i),其中out(原创 2017-03-03 14:17:25 · 1629 阅读 · 2 评论 -
[POJ3694]Network(tarjan+链剖)
题目描述传送门 题意:首先给出一个无向图。每一次询问向这个图里加一条边,求加了这条边之后图中的桥的个数。题解首先tarjan将所有的双连通分量缩成一个点,形成一棵树,每一条树边都是桥边。每连一条边实际上是将这条树链上的所有边都变成非桥边。可以用树链剖分来实现。代码#include<iostream>#include<cstring>#include<cstdio>using namespac原创 2016-11-06 23:08:01 · 426 阅读 · 0 评论 -
[BZOJ2208][Jsoi2010]连通数(dfs||tarjan+拓扑序+dp)
题目描述传送门题解看范围很小,O(n2)O(n^2)暴力就可以做啊= =BZOJ上跑到10s+的比比皆是,事实证明很多人都这样水掉了,而且这样的暴力是卡不掉的。 其实还有一种更高级的做法,就是tarjan+拓扑序+dp。首先将整个图缩点,同一个强连通分量中的点两两互达,所以答案统计为size2isize_i^2。对于不在一个强连通分量里的点,反向连边然后按照拓扑序dp,状态表示为f(i,j)当前到原创 2016-11-01 23:03:39 · 828 阅读 · 0 评论 -
[HDU2767]Proving Equivalences(Tarjan缩点+强连通分量)
题目描述传送门 题意:给出一个有向图,要求加最少的边至强连通。题解首先tarjan缩点,求入度为0和出度为0的点的数目,取max即为答案。 很好理解,从出度为0的点向入度为0的点连边,剩余的要多连。 注意一定要特判整个图强连通的情况。代码#include<iostream>#include<cstring>#include<cstdio>using namespace std;const原创 2016-11-01 16:21:23 · 509 阅读 · 0 评论 -
[POJ1236]Network of Schools(Tarjan缩点+强连通分量)
题目描述传送门题解Q1:求入度为0的强连通分量的个数; Q2:入度为0的强连通分量的个数与出度为0的强连通分量的个数取max Q2注意特判cnt为1的情况。代码#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int max_n=105;int n,x,N,calc,cnt,temp,a原创 2016-11-01 16:20:52 · 495 阅读 · 0 评论 -
[POJ1523]SPF(tarjan求割点)
题目描述传送门 题意:无向图求割点数以及去掉这个割点了之后形成的连通块个数。题解ans[x]表示的是x点的后代能形成的连通块个数。如果x为第一个访问的点,那么连通块个数即为ans[x],如果x不是第一个访问的点,那么连通块个数为ans[x]+1,也就是说加上了来的时候的那个连通块。代码#include<iostream>#include<cstring>#include<cstdio>usi原创 2016-11-07 16:00:14 · 548 阅读 · 0 评论 -
[POJ1144]Network(tarjan求割点)
题目描述传送门 题意:求一个无向图中割点的数量。题解tarjan求割点模板题。 dfn表示点x的时间戳,low表示点x通过其后代最早能到达的点,is_cut表示点x的后代最多能有多少个连通块。 假设一个点是割点,如果这个点是第一个被访问点,那么如果它后代能形成一个以上的连通块的话它就是割点。如果这个点不是第一个被访问的点,那么如果它后代能形成一个或以上的连通块的话它就是割点。代码#includ原创 2016-11-07 15:55:24 · 496 阅读 · 0 评论 -
[BZOJ3887][Usaco2015 Jan]Grass Cownoisseur(tarjan+spfa)
题目描述传送门题解边是可以重复走的,所以在同一个强连通分量里,无论从那个点进入从哪个点出,所有的点一定能被一条路走到。 那么首先用tarjan将所有的强连通分量缩成一个点,每个点的权为该强连通分量中点的个数。然后我们考虑将一条边反置。 强连通分量里的边反置是没有价值的,所以只需要考虑DAG里的边。枚举一条要反置的边,如果将这条边反置的话,答案应该为它的起点到1最多能走到的点数和1到它的终点最多能原创 2016-11-04 13:00:34 · 801 阅读 · 0 评论 -
[BZOJ1179][Apio2009]Atm(tarjan+spfa)
题目描述传送门题解首先将所有的强连通分量缩成一个点,形成一个DAG。然后在这个DAG上用spfa求最长路就行了。代码#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;#define N 500005int n,m,s,p,dfs_clock,scc,ans;struc原创 2016-11-04 12:52:19 · 655 阅读 · 0 评论 -
tarjan相关算法 学习笔记
链接 有向图强连通分量的Tarjan算法 图的割点、桥与双连通分支原创 2016-11-04 09:36:19 · 656 阅读 · 0 评论 -
[HDU1269]迷宫城堡(Tarjan求强连通分量)
一生中你唯一需要回头的时候,是为了看看自己到底走了多远。原创 2016-08-20 15:35:07 · 573 阅读 · 0 评论 -
[BZOJ1123][POI2008]BLO(tarjan求点双+树形dp)
题目描述传送门 题目大意:给出一个n个点m条边的无向连通图,问去掉每一个点之后存在多少点对不连通。题解tarjan求点双联通分量,对于每一个点双建立一个虚拟的节点,然后将这个点双的所有节点都连接到这个节点上,这样就形成了一棵树的结构 容易知道这道题求的应该是去掉每一个点之后形成的联通块的每一个大小,然后利用乘法原理计算一下,所以建出树了之后dp一下就行了代码#include<algorithm>原创 2017-04-06 15:40:13 · 781 阅读 · 0 评论