图论:强连通
文章平均质量分 72
BRCOCOLI
初学者 记录成长 Fighting
展开
-
POJ 2186 Popular Cows Korasaju .
题目地址:http://poj.org/problem?id=2186结论:有向无环图中唯一出度为0的点,一定可以由任何点出发均可达(由于无环,所以从任何点出发往前走,必然终止于一个出度为0的点)所以就找找出度为0的点有几个就好了#include#include#include#include#includeusing namespace std;const int m原创 2016-08-21 14:07:47 · 299 阅读 · 0 评论 -
POJ 3114 Countries in War 强连通+dijkstra .
题目地址:http://poj.org/problem?id=3114缩点再用dijkstra查找一下就好了#include#include#include#include #include #include#includeusing namespace std;const int maxn=500+10;const int INF=1000000000;typedef原创 2016-08-24 14:57:10 · 301 阅读 · 0 评论 -
POJ 2553 The Bottom of a Graph .
题目地址:http://poj.org/problem?id=2553一个点集中任意两个点若u能到v,那么v一定要能到u,也即是求强连通中出度为0的点代码如下:#include#include#include#include #include#includeusing namespace std;const int maxn=5000+10;bool vis[maxn]原创 2016-08-24 14:01:23 · 224 阅读 · 0 评论 -
POJ 2762 Going from u to v or from v to u? 弱连通分量 -
题目地址:http://poj.org/problem?id=2762弱连通分量就是图中任意两点(u,v) u可以到v或者v可以到u题目就是问该图是不是弱连通分量缩点后,形成的树一定是一条链,这样才能有一条通路那么就是缩点后只有n-1个出入度为1的点,1个入读为0,出度为0的点我是通过有n-1个出度入读来判断的AC代码:#include#inc原创 2016-08-23 21:14:09 · 329 阅读 · 0 评论 -
POJ 3180 The Cow Prom 求强连通分量 .
题目地址:http://poj.org/problem?id=3180求强连通分量的点数>=2的个数 #include#include#include#include #include#includeusing namespace std;const int maxn=10000+10;bool vis[maxn];int ans,index; vector df原创 2016-08-23 16:22:33 · 310 阅读 · 0 评论 -
求无向连通图边双连通分支
边双连通分支:不包含桥的极大连通子图算法思路:只需在求出所有的桥以后,把桥边删除,原图变成了多个连通块,则每个连通块就是一个边双连通分支。桥不属于任何一个边双连通分支,其余的边和每个顶点都属于且只属于一个边双连通分支。#include#include#include#include #include#includeusing namespace st原创 2016-08-22 16:21:38 · 551 阅读 · 0 评论 -
POJ 3352 Road Construction 点双连通分支 -
题目地址:http://poj.org/problem?id=3352题意:给你一个图,要求你加入最少的边,使得最后得到的图为一个边双连通分支。所谓的边双连通分支,即不存在桥的连通分支。思路:可以求出所有的桥,把桥删掉。然后把所有的连通分支求出来,显然这些连通分支就是原图中的双连通分支。把它们缩成点,然后添上刚才删去的桥,就构成了一棵树。在树上添边使得树变成一个双连通分支即原创 2016-08-23 15:52:50 · 317 阅读 · 0 评论 -
UVA 796 Critical Links 求桥 .
题目地址:http://acm.hust.edu.cn/vjudge/problem/20839模板题,裸的算法注意:1)题中要求的桥 (u,v) u要小于v2)图不一定连通,但图是无向的,且无重边AC代码:#include#include#include#include #include#include#includeusing namespace原创 2016-08-23 14:26:59 · 272 阅读 · 0 评论 -
求桥和割点的Tarjan算法
low[u]定义为u或者u的子树中能够通过非父子边追溯到的最早的节点的DFS开始时间dfn[u]表示dfs下u的开始时间割点:无向连通图中,如果删除某点后,图变成不连通,则称该点为割点。桥:无向连通图中,如果删除某边后,图变成不连通,则称该边为桥。判断割点方法:(1) u为树根,且u有多于一个子树。(2) u不为树根,且存在(u,v)为树枝边(或称父子边原创 2016-08-22 14:47:09 · 2958 阅读 · 2 评论 -
POJ 1144 Network 求桥的模板题
题目地址:http://poj.org/problem?id=1144直接上模板就好了#include#include#include#include #include #include#includeusing namespace std;const int maxn=100+5;typedef pair Edge; int index=0,rootson; ve原创 2016-08-23 13:18:46 · 371 阅读 · 0 评论 -
求无向图连通图点双连通分支
点双连通分支:不包含割点的极大连通子图算法思路:建立一个栈,存储当前双连通分支,在搜索图时,每找到一条树枝边或反向边(连到树中祖先的边),就把这条边加入栈中。如果遇到某树枝边(u,v) 满足dfn(u)一个割点,此时把边从栈顶一个个取出,直到遇到了边(u,v),取出的这些边与其关联的点,组成一个点双连通分支。注意:割点可以属于多个点双连通分支,其余点和每原创 2016-08-22 15:23:35 · 1646 阅读 · 0 评论 -
POJ 1236 Network of Schools 强连通分支 .
题目地址:http://poj.org/problem?id=1236题目意思:给定一个有向图,求:1) 至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点2) 至少要加多少条边,才能使得从任何一个顶点出发,都能到达全部顶点解:1)缩点2) DAG上面有多少个入度为0的顶点就是1)的答案3)假定有 n 个入度为0的点,m个出度为0的点,max原创 2016-08-21 15:54:10 · 235 阅读 · 0 评论 -
Tarjan求强连通(缩点)
#include#include#include#include #include#includeusing namespace std;const int maxn=10000+10;bool vis[maxn];int ID[maxn]; //点的颜色编号 int index,ncolor; vector dfn(maxn),low(maxn),st;v原创 2016-08-21 16:48:38 · 229 阅读 · 0 评论 -
POJ 2186 Popular Cows Tarjan算法
题目地址:http://poj.org/problem?id=2186#include#include#include#include #include#includeusing namespace std;const int maxn=10000+10;bool vis[maxn];int ID[maxn]; //点的颜色编号 int index,ncolo原创 2016-08-21 16:47:44 · 289 阅读 · 0 评论 -
Korasaju
procedure Strongly_Connected_Components(G); begin 1.深度优先遍历G,算出每个结点u的结束时间f[u],起点如何选择无所谓。 2.深度优先遍历G的转置图GT,选择遍历的起点时,按照结点的结束时间从大到小进行。遍历的过程中,一边遍历,一边给结点做分类标记,每找到一个新的起点,分类标记值就加1。3. 第2步中产生的标记值相同的结点构成深度优先森原创 2016-08-21 14:12:43 · 407 阅读 · 0 评论 -
POJ 3160 Father Christmas flymouse 强连通+Spfa
题目地址:http://poj.org/problem?id=3160缩点然后找出一条权重最大的路路当然是越长越好,所以从每个入度为0的点出发,找一条权值最长的可以假设一个点,从该点出发可以到所有入读为0的,然后以该点为起点SPFA#include#include#include#include #include #include#includeusing names原创 2016-08-24 16:14:57 · 235 阅读 · 0 评论