题意:给定一个无向图,分别求出不在任何环中的边的数量和同时在两个或以上的环中的边的数量。
解法:桥上的边就是不在任何环中的。而如果一个点双连通分量中边的数量比点的数量要多,那么该双连通分量的所有边都同时在两个或以上的环中(这个可以想象一下,在一个简单环中多加一条端点不同的边,这样简单环就会被分割成两个小的简单环,任何一条在大的环中的边都会同时处于一个其中一个小的环中)。
在tarjan算法中,...
分类:
其他好文 时间:
2015-05-03 09:23:49
阅读次数:
119
最近做到一道题目,大概的意思就是求一个多叉树中两个节点的最近公共祖先,输入是用邻接矩阵表示的。要想理解tarjan算法并实现它,需要先理解一下内容:1) 深度优先搜索;tarjan算法核心思想:当某节点刚刚搜索完毕时,看与其相关的结点v是否已经被访问,如果v已经被访问过了,则它们的最近公共祖先就是v...
分类:
编程语言 时间:
2015-04-26 15:12:34
阅读次数:
138
分析:首先求强连通分量的个数,然后进行缩点,最后求出最终答案。
1、求强连通分量的个数使用tarjan算法。
2、缩点为另外一个图,通过tarjan算法求出的结果进行。缩点后的图中求出每个点的入度。
3、求出每个强连通分量中的最小花费。
4、根据缩点后图的入度求出最终结果。
#include
#include
#include
using namespace std;
vect...
分类:
编程语言 时间:
2015-04-25 15:12:01
阅读次数:
182
分析:本题判断一个图是否是有向强连通分量,这里使用tarjan算法求解。
#include
#include
#include
using namespace std;
vector map[10002];
stack tarjan_stack;
int low[10002];
int dfn[10002];
bool vis[10002];
int cnt,pos;
void Init(i...
分类:
编程语言 时间:
2015-04-25 13:46:55
阅读次数:
150
大致题意:
给出一个连通的无向图,求哪些点是割点,对于每个割点,求出去掉这个点后连通分量的个数。如果没有割点的话输出“ No SPF nodes”。
思路:
求割点用tarjan即可,然后要求删除割点后连通分量的个数,每次找到割点,再在从割点dfs即可,也可以直接在tarjan算法中记录child个数。那么如果割点是根,那么答案就是child,不是根的割点答案是child+1
//1...
分类:
其他好文 时间:
2015-04-24 09:09:55
阅读次数:
111
SPF题目抽象,给出一个连通图的一些边,求关节点。以及每个关节点分出的连通分量的个数 邻接矩阵只要16ms,而邻接表却要32ms, 花费了大量的时间在加边上。// time 16ms 1 #include 2 #inclu...
分类:
编程语言 时间:
2015-04-21 22:29:58
阅读次数:
231
Problem Description:
为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N
Input:
输入包含多组数据,输入的第一行有两个数:N和M,接下来的M行每行有两个数a和b,表示了一条通道可以从A房间来到B房间。文件最后以两个0结束。
Output:
对于输入的每组数据,如果任意两个房间都是相互连接的,输出"Yes",否则输出"No"。
S...
分类:
移动开发 时间:
2015-04-08 16:27:10
阅读次数:
153
题目地址:HDU 2874
好坑的一道题。。MLE了好长时间、。、。全用了前向星而且把G++改成了C++才过了。。
LCA裸题,没什么好说的。。
代码如下;#include
#include
#include
#include
#include
#include
#inc...
分类:
其他好文 时间:
2015-04-03 21:07:08
阅读次数:
164
考虑“删除后图仍连通”,即其不是无向图的桥(bridge),可以用Tarjan算法预处理,这里不赘述。【算法一】枚举删除的是哪条边,然后枚举起点,暴搜,统计答案。可以通过0、1号测试点。预计得分:20分。【算法二】枚举删除的是哪条边,接着,①枚举起点,∵op=0,∴裸最短路,Heap-dijkstr...
分类:
其他好文 时间:
2015-03-29 19:33:55
阅读次数:
185