随笔分类 -  图论·连通图

摘要:题意: 在有 n 个节点的有向图中 有 m 条边,问最少需要增加多少条边可以将原图变成一个强连通图。分析: 因为图中每个环都满足强连通的性质,可以用强连通分量的算法将原图中的环进行染色缩点。 缩点的最大好处在于把一个杂乱无章的有向图变成一个有向无环图,而在有向无环图中,有两种点 比较特殊: 一种是入度为 0 的点,另一种是 出度为 0 的点。 题目问要增加多少条边使得原图变成强连通图,其实只要知道在树根个叶子之间加多少条边,假如r 为根的个数, g 为叶子的个数,答案即为max(r,g)。 特殊情况是当缩点之后只有一个点时,答案为 0。code:View Code #include<st 阅读全文
posted @ 2012-07-15 21:17 'wind 阅读(328) 评论(0) 推荐(0)
摘要:题意: 给一个有 n 个节点的有向图,和 m 条有向边,问这个图中是否任意两个点都能互达。分析: 任意两个点能够互达,即要求图的强连通分量的个数为一,求出图的强连通子图的个数即可。PS : Tarjan算法 详解 http://www.byvoid.com/blog/scc-tarjan/code:#include<stdio.h>#include<string.h>#define clr(x)memset(x,0,sizeof(x))const int maxn=100010;struct node{ int to; int next;}q[100010];int h 阅读全文
posted @ 2012-07-14 21:06 'wind 阅读(217) 评论(0) 推荐(0)