
图论-强连通图
文章平均质量分 69
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
uva 10765 - Doves and bombs(连通分量)
题目链接:uva 10765 - Doves and bombs求出整个图的联通分量,对于割点来说,就是割点连接的分量数,非割点为1.#include #include #include #include #include using namespace std;const int maxn = 10005;struct State { int u, v原创 2015-09-07 22:33:38 · 809 阅读 · 0 评论 -
hdu 4635 Strongly connected(强联通)
题目链接:hdu 4635 Strongly connected解题思路先对给定图做强联通分量,选取出度或者是入度为0的分量中点个数最少的一个,然后其它联通分量算一个,将图分成两部分,做完全图并保证两部分是之间的边均为单向边。代码#include <cstdio>#include <cstring>#include <vector>#include <stack>#include <algo原创 2015-10-28 21:46:08 · 529 阅读 · 0 评论 -
hdu 4685 Prince and Princess(二分图匹配 + 强连通)
题目链接:hdu 4685 Prince and Princess解题思路K为当前最大匹配数,王子增加M-K个虚拟点用来匹配没有配对成功的公主,公主增加N-K的虚拟点用来匹配没有配对成功的王子,然后从公主建一条反向边到其配对的王子,做一次强连通,属于同一联通分量的王子和公主可以配对。代码#include <cstdio>#include <cstring>#include <vector>#i原创 2015-11-13 11:11:42 · 848 阅读 · 0 评论 -
uva 1327 - King's Quest(强联通)
题目链接:uva 1327 - King's Quest建图,然后求强联通分量,与王子处在同一个联通分量的公主即为可选。#include #include #include #include #include using namespace std;const int maxn = 4005;int N, pre[maxn], sccno[maxn], d原创 2015-09-23 22:24:28 · 755 阅读 · 0 评论 -
hdu 4612 Warm up(缩点+树直径)
题目链接:hdu 4612 Warm up解题思路先双联通缩点,然后对缩完点的树求树的直径。代码#include <cstdio>#include <cstring>#include <queue>#include <algorithm>using namespace std;const int maxn = 200005;const int maxm = 1000005;int N, M,原创 2015-10-26 21:37:01 · 661 阅读 · 0 评论 -
hdu 5458 Stability(树链剖分+强连通缩点+线段树)
题目链接:hdu 5458 Stability解题思路先将操作处理一遍,获得最终图,然后对图进行双联通缩点,剩下的肯定是一棵树,然后将操作逆着做一遍,遇到删边等于是加一条边,加的这条边u,v等于是将两节点路径上的点联通起来变成一个新的双联通分量,在同一个双联通分量中,明显ans=0。所以我们用线段树维护树的每条边权,一开始全为1,每次添加一条边,就将这条路径上的边权值置为0。代码#include <原创 2015-09-29 20:45:48 · 976 阅读 · 0 评论 -
uva 12167 - Proving Equivalences(强连通)
题目链接:uva 12167 - Proving Equivalences#include #include #include #include #include using namespace std;const int maxn = 20005;int N, M, in[maxn], ot[maxn];int cntlock, cntscc, pre[maxn原创 2015-09-07 23:12:43 · 639 阅读 · 0 评论 -
uva 610 - Street Directions(双联通)
题目链接:uva 610 - Street Directions求出所有边双联通分量,然后每一块单独考虑即可。#include #include #include #include using namespace std;typedef pair pii;const int maxn = 1005;const int maxm = 1e6;int N,原创 2015-09-12 22:17:58 · 640 阅读 · 0 评论 -
uva 1464 - Traffic Real Time Query System(双联通+LCA)
题目链接:uva 1464 - Traffic Real Time Query System必须经过的点一定是切点,将图缩点,以块和切点建立一棵树,然后即是在树上查询两节点路径上切点数,求出LCA容斥一下。#include #include #include #include #include using namespace std;typedef pair原创 2015-09-12 22:20:41 · 1150 阅读 · 0 评论 -
uva 11324 - The Largest Clique(强联通图+拓扑)
题目链接:uva 11324 - The Largest Clique强连通缩点后,以缩掉的节点数作为新点的权值,缩完点之后就是一张DAG图,然后做拓扑排序。#include #include #include #include #include #include using namespace std;const int maxn = 1005;int原创 2015-09-07 22:51:23 · 517 阅读 · 0 评论 -
uva 1361 - Cactus(双联通)
题目链接:uva 1361 - Cactus判断所有双联通分量是否是一个简单环,是的话最后答案为各个环点个数+1的乘积,因为一个环只能删除一条边(可以不删)#include #include #include #include #include using namespace std;typedef pair pii;typedef long long ll原创 2015-09-11 21:44:36 · 663 阅读 · 0 评论 -
uva 1310 - One-way traffic(连通分量)
题目链接:uva 1310 - One-way traffic途中的桥不能变成单向边,其他的按照dfs顺序变成单向边。#include #include #include #include using namespace std;const int maxn = 2005;const int maxm = 2 * 1e6 + 5;typedef pair p原创 2015-09-11 21:40:44 · 852 阅读 · 0 评论 -
uva 11504 - Dominos(强联通分量)
题目链接:uva 11504 - Dominos缩点,入度为0的点个数即为答案。#include #include #include #include #include using namespace std;const int maxn = 1e5 + 5;int N, M, in[maxn];int cntlock, cntscc, pre[maxn原创 2015-09-11 21:15:29 · 1060 阅读 · 0 评论 -
uva 11098 - Battle II(强联通)
题目链接:uva 11098 - Battle II先将图缩点,每个强连通分量中最小的点权做为新点的点权。所有入度为0的点是一定要的,然后从点权小的开始考虑,如果加入后平均值变小,则加入。最后按照dfs序排序后输出。#include #include #include #include #include #include using namespace std原创 2015-09-11 20:56:45 · 484 阅读 · 0 评论 -
uva 10972 - RevolC FaeLoN(双联通)
题目链接:uva 10972 - RevolC FaeLoN将图缩点,每个双联通分量中的两点一定可以相互到达。缩完点之后就是一棵树,也有可能是森林,需要建的变数即为整个森林的叶子节点个数除2,需要注意的是当一个树只有一个节点的时候,需要和其他节点建一条入边,一条出边,贡献度为2.#include #include #include #include #include原创 2015-09-11 20:49:20 · 683 阅读 · 0 评论 -
uva 10510 - Cactus(仙人掌图)
题目链接:uva 10510 - Cactus类似求强联通分量的算法,但是每次更新到反向边是,说明存在一个环,那么就将环上的点标记+1,如果有点的标记值大于等于2,说明有边存在在两个环中。#include #include #include #include using namespace std;const int maxn = 1e4 + 5;int N原创 2015-09-10 22:50:23 · 1033 阅读 · 0 评论 -
uva 1108 - Mining Your Own Business(强连通)
题目链接:uva 1108 - Mining Your Own Business一个联通分量里面如果只有一个割点,则说明该联通分量里面需要一个天井,并且不能建在割点上。特殊情况下为只有一个联通分量的情况,需要选两个点。#include #include #include #include #include using namespace std;typedef原创 2015-09-02 23:33:17 · 869 阅读 · 0 评论 -
uva 1364 - Knights of the Round Table(二分图+强连通)
题目链接:uva 1364 - Knights of the Round Table处理出所有点-双联通分量,判断每个联通分量是否是二分图,如果不是二分图的话所有点即为有会议可以参加。#include #include #include #include #include using namespace std;typedef pair pii;const原创 2015-09-02 23:27:27 · 775 阅读 · 0 评论 -
hdu 5409 CRB and Graph(强连通)
题目链接:hdu 5409 CRB and Graph代码#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int maxn = 1e5 + 5; // The number of Nodeconst int maxm = 1e5 + 5; //原创 2015-12-03 20:48:15 · 950 阅读 · 0 评论