
Tarjan
文章平均质量分 62
PoPoQQQ
这个作者很懒,什么都没留下…
展开
-
BZOJ 2208 JSOI2010 连通数 Tarjan+拓扑排序
题目大意:给定一个n个点的有向图,求有多少点对(x,y),使x沿边可到达y设f[i][j]为从i到j是否可达首先强联通分量中的任意两个点均可达 于是我们利用Tarjan缩点缩点之后是一个拓扑图,我们求出拓扑序,沿着拓扑序从后向前DP,状态转移方程为:f[i][k]=or{ f[j][k] } (i有直连边到达j,1鉴于每个点的值只会是1或者0,所以我们可以直接状压,或者干脆开b原创 2014-10-13 14:14:31 · 1930 阅读 · 0 评论 -
HDU 4694 Important Sisters Lengauer_Tarjan算法
题目大意:给定一张nn个点mm条边的有向图,保证nn号点可以到达所有点,求nn号节点到每个点的必经点的编号之和数据是错的,存在nn号点无法到达的点,这些点输出00求Dominator Tree的Lengauer-Tarjan算法,具体做法自己百度我不赘述了#include <vector>#include <cstdio>#include <cstring>#include <iostream原创 2015-10-08 20:38:22 · 1997 阅读 · 0 评论 -
BZOJ 2788 Poi2012 Festival 差分约束+Tarjan+Floyd
题目大意:给定nn个正整数变量和m1+m2m1+m2个限制条件,每个形如xi+1=yix_i+1=y_i或xi<=yix_i<=y_i,求这些变量最多能有多少个不同的取值首先我们可以根据差分约束建图,Floyd跑最短路,判断是否无解 然后Tarjan缩点,显然不同强连通分量之间互不影响 一个强连通分量内的最多取值个数等于强连通分量两两之间最短路的最大值+1+1证明: 由于边权只有{0,1,−1原创 2015-09-06 19:37:23 · 2434 阅读 · 0 评论 -
BZOJ 4116 Wf2015 Tours Tarjan
题目大意:给定一张nn个点mm条边的无向图,你需要选择一个颜色种类数kk,然后用这kk种颜色给每条边染色,要求对于图中任意一个简单环,每种颜色的边的数量都相同,求所有可行的kk考虑将边集EE拆成一些子集{E1,E2,E3,..}\{E_1,E_2,E_3,..\},满足任意一个简单环可以被拆成一些子集的和,且不存在两个子集合并后仍满足条件,那么答案就是gcd{|E1|,|E2|,|E3|,..}\g原创 2015-07-12 14:16:07 · 2373 阅读 · 0 评论 -
BZOJ 1194 HNOI2006 潘多拉的盒子 BFS+Tarjan+拓扑序DP
题目大意:给定一些自动机,如果某个自动机AA能产生的所有串都能在自动机BB中产生,则称BB是AA的一个升级,求最长链 这题TM有毒 数据范围5050,暴力枚举每一对点之间的关系,然后Tarjan缩点求最长链就行了 现在对于一对自动机AA和BB,我想知道AA能产生的所有串是否都能在BB中产生,那么BFS就可以了 我们用一个二元组(x,y)(x,y)表示走了某个串后AA走到了节点xx,BB走到了原创 2015-04-27 18:51:57 · 3459 阅读 · 0 评论 -
BZOJ 3887 Usaco2015 Jan Grass Cownoisseur Tarjan+拓扑排序
题目大意:给定一张图,从1开始随便走最后回到1,有一次机会可以反向沿着某条边走一次,求最多能经过多少个点显然如果没有反向的机会的话答案就是1号节点所在强连通分量的大小现在有了这个机会 那么将某条边反向后 缩点之后的图形成了一个包含1号节点所在强连通分量的环 这样才能使答案增加将这个环从反向的边和1号节点所在强连通分量处断开 发现这个环被拆成了两条链一条从1出发,一条指向1因此缩原创 2015-03-05 13:15:41 · 2985 阅读 · 1 评论 -
BZOJ 1123 POI2008 BLO Tarjan+树形DP
题目大意:给定一张无向图,求每个点被封锁之后有多少个有序点对(x,y)(x!=y,1还是看原题面爽。。。Tarjan求点双,然后TreeDP即可时间复杂度O(n+m)#include #include #include #include #include #define M 100100using namespace std;int n,m,cnt;long lon原创 2015-03-25 11:46:24 · 1541 阅读 · 0 评论 -
BZOJ 2125 最短路 静态仙人掌
题目大意:给定一棵仙人掌,多次询问两点之间的最短路静态仙人掌= = 在VFK讲仙人掌之前就想做= = 结果一直拖= =好不容易写完了= = 刚过样例 BZ就开始维护- - 维护到闭营= = 交上去还WA了= = 尼玛我这傻逼到底还是把倍增LCA写挂了= =算了回归正题首先我们的思路是这样的考虑给定的是一棵树 多次询问树上两点间距离 那么我们一般的做法是预处理每个点到原创 2015-02-18 15:02:58 · 3445 阅读 · 0 评论 -
BZOJ 1093 ZJOI2007 最大半连通子图 Tarjan+动态规划
题目大意:定义半连通子图为一个诱导子图,其中任意两点(x,y)中x可到达y或y可到达x,求最大半连通子图的大小以及方案数不就是个缩点之后拓扑序DP求最长链么 这题意逗不逗233333注意缩点后连边不要连重复了 判重边那里我用了set。。。#include #include #include #include #include #define M 100100using na原创 2015-01-19 17:51:54 · 1372 阅读 · 0 评论 -
BZOJ 1023 SHOI2008 cactus仙人掌图 仙人掌DP
题目大意:给定一棵仙人掌,求这棵仙人掌的直径首先Tarjan缩点双,开vector或者链表记录每个点属于哪些点双,以及每个点双中有哪些点有些点双可能不是环,我们可以补上一条边看成环,无伤大雅每次DP时,首先枚举环的根节点以外的点,对这些点所在的其它点双DP一遍然后令f[x]为以x为根的子仙人掌的所有点和x之间的最大距离然后我们将环倍增 用单调队列来更新答案 保证决策点和被更新点原创 2015-01-10 16:11:49 · 1705 阅读 · 0 评论 -
UOJ #30. 【CF Round #278】Tourists Tarjan+树链剖分
题目链接:http://uoj.ac/problem/30题目大意:给定一张无向连通图,每个点有点权,多次询问两个点之间的简单路径上最小点权值的最小值首先求的是最小点权值的最小值 那么我们肯定要走点权越小的点越好 但是由于求的是简单路径 那么我们就不能经过同一个点两次那么我们Tarjan求点双联通分量 每个点双维护一个最小值 那么答案显然就是两点所在点双路径上的最小值 树链剖分即可 (原创 2014-12-01 17:24:48 · 2544 阅读 · 1 评论 -
BZOJ 2438 中山市选2011 杀人游戏 Tarjan
题目大意:有n个人,其中一个是杀手,可以询问一些人,如果是杀手就会死,如果是平民,他会告诉你他认识的人中有谁是杀手有谁是平民更正:数据没有问题,之前的做法是错误的,特此更正!易知如果我需要访问x个人,那么答案就是1-x/n 我们需要访问最少的人如果我访问的人是平民,那么这个点所有的后继我都能知道于是Tarjan缩点之后入度为零的点就是答案但是还有一个问题 比如说这组样例3原创 2014-11-23 14:13:28 · 1557 阅读 · 0 评论 -
BZOJ 1179 APIO2009 ATM Tarjan+堆优化SPFA
题目大意:给定一个有向图,每个点上有正权,求一条从起点出发到任意终点的路径,要求路上的点权和最大(一个点权只能被加一次)首先Tarjan缩点,易知一个强连通分量内任意一个点权拿到就可以拿到强连通分量内所有的点权然后这个图就没有环了,SPFA跑最长路即可边数500W,所以要加堆优化#include#include#include#include#define M 500500原创 2014-11-02 14:13:19 · 1695 阅读 · 0 评论 -
BZOJ 2730 HNOI2012 矿场搭建 Tarjan
题目大意:给定一个无向图,要求将一些点设为出口 要求图中删掉任意一个点后剩余的任意一个点都与至少一个出口相连 求最少建多少个出口以及建最少出口的方案数首先看到割点就是Tarjan搞 但是怎么搞首先假设我们把所有的点双都缩点 那么我们一定可以得到一棵树 然后我们就会发现叶子节点(只含有一个割点的点双)必须建 因为叶子节点如果不建 一旦割点被爆就死翘了非叶节点(含有两个或两个以上的割点原创 2014-11-04 14:29:58 · 2835 阅读 · 3 评论