题意:
一幅无向图 将尽量多的无向边定向成有向边 使得图强连通 无向图保证是连通的且没有重边
思路:
桥必须是双向的 因此先求边双连通分量 并将桥保存在ans中
每个双连通分量内的边一定都可以变成有向边(毕竟是圈组成的图) 边的定向方式分两种:
1、对于树枝边u->v 如果low[v]>dfn[u]说明v回不到u上面去 所以ans应该是v->u的边 否则是u->v
2、...
分类:
其他好文 时间:
2014-08-31 11:56:31
阅读次数:
213
UVA 11324 - The Largest Clique
题目链接
题意:给定一个有向图,要求找一个集合,使得集合内任意两点(u, v)要么u能到v,要么v能到u,问最大能选几个点
思路:强连通分量,构造出scc之后,缩点,每个点的权值是集合点个数,然后做一遍dag找出最大权值路径即可
代码:
#include
#include
#include
#incl...
分类:
其他好文 时间:
2014-08-30 13:55:39
阅读次数:
196
UVA 12167 - Proving Equivalences
题目链接
题意:给定一些已经存在的等价性证明,要求全部等价,需要在多最少几次证明
思路:先求出强连通分量,然后进行缩点,在缩点后的图上统计入度和出度为0结点的最大值,就是需要加的边数,注意如果整个图已经是强连通,就直接是答案
代码:
#include
#include
#include
#incl...
分类:
其他好文 时间:
2014-08-29 22:45:40
阅读次数:
279
开篇 敬仰下 大师-tarjan 发明的这些算法太流弊了=-=使用这个lca_tarjan之前 可以先去学习下使用tarjan解决scc强连通问题我本来是去做到hdu-4912-发现做不来=-= 去网上搜了下 都说是神马lca的....那就去学下吧 而且很多也将这题当做入门题..lca分离线和在线 ...
分类:
其他好文 时间:
2014-08-29 15:53:38
阅读次数:
213
这个专题充分暴露了不认真思考的缺点,总是感觉差不多就下手。
对于A题目,以为是强连通分量缩点。但实际上是求桥。
并考虑:1.重边 2.权重为0则初始值不能赋值为0,当选取权重为0的边答案为1 3.没有答案。
对于B题目,起初想得很复杂,以为是动态规划,一直在思考转移方程。但其实DFS就可以,但漏掉了形成正方形的另一个条件,底边平行。
对于C题目,这里又出现了漏洞(直接DFS不用考虑这些)...
分类:
其他好文 时间:
2014-08-29 09:29:27
阅读次数:
220
题目大意:在一个有向图中,每两点间通信需要一定的时间,但同一个强连通分量里传递信息不用时间,给两点u,v求他们最小的通信时间。解题过程:1.首先把强连通分量缩点,然后遍历每一条边来更新两个强联通分量之间的距离。。2.直接Floyd会超时,应该用dijstra或者spfa做k次最短路。犯的错误:前向星...
分类:
其他好文 时间:
2014-08-27 20:10:38
阅读次数:
211
题意:
一幅有向图是不是仙人掌
思路:
有向图仙人掌是强连通图且每条边最多只属于一个环
一幅有向图是仙人掌当且仅当满足3个条件:
1、dfs树无横向边
2、对于节点u的所有儿子v,它们的low[v]
3、满足low[v]
证明见 http://download.csdn.net/detail/kksleric/4502360
代码:
#include
#include
#i...
分类:
其他好文 时间:
2014-08-27 14:43:58
阅读次数:
196
1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点。
2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。
3.点连通度:最小割点集合中的顶点数。
4.割边(桥):删掉它之后,图必然会分裂为两个或两个以上的子图。
5.割边集合:如果有一个边集合,删除这个边集合以后,...
分类:
其他好文 时间:
2014-08-26 21:30:06
阅读次数:
612
题目地址:POJ 1144
求割点。判断一个点是否是割点有两种判断情况:
如果u为割点,当且仅当满足下面的1条
1、如果u为树根,那么u必须有多于1棵子树
2、如果u不为树根,那么(u,v)为树枝边,当Low[v]>=DFN[u]时。
然后根据这两句来找割点就可以了。
代码如下:
#include
#include
#include
#include...
分类:
Web程序 时间:
2014-08-26 11:46:55
阅读次数:
180
题目地址:POJ 1523
这题猛的一看。。貌似有点难的样子。不过仔细一想,那个每个割点所分成一次子图不就都能找到这个割点一次吗,那么只要记录下它作为割点的次数再+1不就行了。也算是求割点的裸题吧。这个题的输出很坑。。。需要注意一下。。
代码如下:
#include
#include
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2014-08-26 11:40:06
阅读次数:
150