SCC / BCC / 割顶 / 桥
文章平均质量分 77
BraketBN
这个作者很懒,什么都没留下…
展开
-
【BZOJ1589】[Usaco2008 Dec]Trick or Treat on the Farm 采集糖果【SCC】【基环外向树】【DP】【记忆化搜索】
http://www.lydsy.com/JudgeOnline/problem.php?id=1589 首先这是一个基环外向树,先tarjan缩点变成DAG,然后跑dp就行了。 记忆化搜索写成了 if(dp[x]) return x; 一定是没睡好... /* Footprints In The Blood Soaked Snow */ #include #inc原创 2016-03-18 08:49:08 · 977 阅读 · 0 评论 -
【ZOJ-2588】Burning Bridges【桥】
题意: 给出一个无向图,求桥的个数和编号。注意有重边。 tarjan一遍即可,参考大白书写的代码。 重边的处理: 每条边记录一个flag,表示当前边是否是重边(是不是单身)。 注意没有桥的情况,还有输出格式。 #include #include using namespace std; const int maxn = 10005, maxm原创 2016-02-26 11:38:12 · 408 阅读 · 0 评论 -
【HDU3394】Railway【BCC】【桥】
题意: n个点的无向图,求桥边个数,求属于多个环的边的个数。 BCC裸题? 跑一次tarjan都可以求出来啦。 #include #include #include #include using namespace std; const int maxn = 10005, maxm = 100005; int n, m, head[maxn], cnt, lo原创 2016-02-26 14:59:15 · 554 阅读 · 0 评论 -
【BZOJ1123】[POI2008]BLO【割顶】
【题目链接】 题意可见discuss。 用Tarjan求割顶,然后对割顶的所有子树求点对个数(前缀和扫一遍),最后把自身和其他点的答案加上。 没注意边,数组开小了。 /* Pigonometry */ #include #include using namespace std; typedef long long LL; const int maxn = 1000原创 2016-04-21 11:39:37 · 670 阅读 · 0 评论 -
【BZOJ1093】[ZJOI2007]最大半连通子图【SCC】【DAG】【DP】
【题目链接】 先SCC缩点,在DAG上跑最长路,顺便统计出到达每个点的最长路的路径个数。 /* Pigonometry */ #include #include #include #include #include using namespace std; typedef pair pii; const int maxn = 100005, maxm = 1000005, ma原创 2016-04-29 10:18:54 · 613 阅读 · 0 评论 -
【BZOJ2772】policija【BCC】【割顶】【离线】【分治】【并查集】
【题目链接】 先跑出dfs树。 对于两个操作,先把不连通的情况用并查集搞掉。 另外对于操作1,如果G1-G2是非树边,那么形成了环,这种情况肯定是yes。 然后跑Tarjan,对每个操作形成的子树讨论一下就完了。 #include /* Pigonometry */ #include #include #include using namespace std; const原创 2016-04-28 15:33:20 · 566 阅读 · 0 评论 -
【BZOJ3590】[Snoi2013]Quare【双连通分量】【状压DP】【神题】
【题目链接】 orz凯爷,见【Lethelody的题解】 首先一个双连通图可以拆为一个小双连通图和一条链。 设c[s][u][v]表示一条链的集合状态为s,链的端点分别为u和v的最短路径。 设h[s][u][0/1]表示集合状态为s,不在集合s内的点u与另一个在集合s中的点的最短路径/次短路径。 设f[s]表示集合状态为s,且s双联通的最小权值。 c可以递推转移。h原创 2016-04-07 23:19:09 · 1286 阅读 · 0 评论 -
【BZOJ1179】[Apio2009]Atm【SCC】【最长路】
【题目链接】 tarjan先缩点,然后跑个最长路。读入一个酒吧位置就更新一次答案。 /* Pigonometry */ #include #include #include #include #include using namespace std; typedef pair pii; const int maxn = 500005, maxs = maxn; int n,原创 2016-04-05 16:59:20 · 479 阅读 · 0 评论 -
【BZOJ2140】稳定婚姻【SCC】【二分图完备匹配】
题意: 给出一个二分图完备匹配,找另一个完备匹配。 竟然是SCC,和稳定婚姻并没有什么卵关系。 对于原始的匹配点u, v,连接(v, u) 对于可行的匹配点u, v,连接(u, v) 跑一次tarjan。 对于一组夫妻,如果两个人在同一个SCC里,那么是Unsafe,否则Safe。 好久没敲tarjan了。 #include #incl原创 2016-02-26 15:52:59 · 891 阅读 · 0 评论 -
【Uva11324】The Largest Clique【SCC】【最长路】【有向图最大团】
【题目链接】 题意:有向图最大团,即选出一些点,使得任意两点u, v,要么u可以到v,要么v可以到u,也可以互达。 先SCC缩点变为DAG,然后求最长路。 /* Pigonometry */ #include #include using namespace std; const int maxn = 1005, maxm = 50005, maxs = 10000, maxq原创 2016-04-02 11:40:44 · 451 阅读 · 0 评论 -
【BZOJ2208】[Jsoi2010]连通数【BFS/DFS】【SCC】
http://www.lydsy.com/JudgeOnline/problem.php?id=2208 tarjan缩点然后dp。 但是发现点数才2000...BFS可过。 边数是n^2,不是n /* Footprints In The Blood Soaked Snow */ #include using namespace std; const int m原创 2016-03-19 14:34:21 · 451 阅读 · 0 评论 -
【BZOJ1194】[HNOI2006]潘多拉的盒子【BFS】【SCC】【拓扑排序】【DAG最长路】【自动机】
【题目链接】 这题有毒orz。 判断两个自动机是否有升级关系,BFS一次就行了orz。两个自动机都从0开始,同时走0,同时走1。如果一个自动机到达输出点,而另一个没到达,那么没有升级关系。 然后根据升级关系建图,Tarjan缩点,然后跑DAG上最长路就行了。 注意一个强联通内都是互相有升级关系的,跑最长路时要取size而不是取1,WA了一发... /* Pigonomet原创 2016-04-23 17:15:33 · 870 阅读 · 0 评论