强连通
小狐狸jun
菜鸟飞呀飞~
展开
-
hdu1269强连通模板
题意当强连通分量为1的时候输出Yes否者输出No。 学习了一下强连通分量的步骤,给出算法详解http://www.byvoid.com/zht/blog/scc-tarjan(注:不能用IE浏览) 该题也可以用双向dfs求强连通分量,这里给出Tarjan算法的模板,更适合变形。 也贴上双向dfs的代码吧。 代码Tarjan(这是网上有注释的代码,讲得很细): #include原创 2013-04-16 15:11:33 · 4077 阅读 · 1 评论 -
poj3249 拓扑排序+DP
题意:给出一个有向无环图,每个顶点都有一个权值。求一条从入度为0的顶点到出度为0的顶点的一条路径,路径上所有顶点权值和最大。 思路:因为是无环图,则对于每个点经过的路径求其最大权值有,dp[i]=max(dp[j]) j为i的子节点集合。再根据其要求入度为零为顶点,可以用拓扑排序每次枚举入度为零的点删去找下一个入度为零的点进行dp。 代码: #include #includ原创 2013-08-08 09:36:02 · 1737 阅读 · 0 评论 -
poj2914无向图的最小割模板
题意:给出无向图的点,边,权值。求最小割。 思路:根据题目规模,最大流算法会超时。 网上参考的模板代码。 代码: /*最小割集◎Stoer-Wagner算法:一个无向连通网络,去掉一个边集可以使其变成两个连通分量则这个边集就是割集;最小割集当然就权和最小的割集。 prim算法不仅仅可以求最小生成树,也可以求“最大生成树”。最小割集Stoer-Wagner算法就是典型的应用原创 2013-08-07 16:10:13 · 2003 阅读 · 0 评论 -
poj2942(双联通分量,交叉染色判二分图)
题意:一些骑士,他们有些人之间有矛盾,现在要求选出一些骑士围成一圈,圈要满足如下条件:1.人数大于1。2.总人数为奇数。3.有仇恨的骑士不能挨着坐。问有几个骑士不能和任何人形成任何的圆圈。 思路:首先反向建立补图,然后问题转换成在图中找奇圈,圈肯定出现在双联通分量中,则求出图的双联通分量,又通过特性知道,一个双联通分量有奇圈则其中的点都可以出现在一个奇圈中。而对于奇圈的判定可以用交叉染色判原创 2013-08-07 11:49:22 · 3142 阅读 · 0 评论 -
poj 1523求割点
题意:给出一个无向图,求割点以及去除这个点后图分为几部分; 思路:割点定义:去掉该点后图将分成几个部分。割点:(1)当k为根节点且有>1个分支,则去除该点后图便被分成几个分支。(2)DFN[v] 代码: #include #include #include using namespace std; #define MAXN 1005 #define MAXM 1005*原创 2013-08-06 19:49:42 · 525 阅读 · 0 评论 -
poj 3177-3352边双联通
买一送一啊 3177和3352的区别在于3177数据有重边!但是我先做3177的 那么就直接ctrl+c+v搞3352了~。 题意:给一个无向图,要令每个点之间至少有两条不重合的路,需要至少加多少条边。 思路:找出无向图中边双联通的点进行缩点后,根据缩点图的每条边(割边)给缩点增加度数,通过图的结构可以得出 公式:至少增加的边数 =(这棵树总度数为1的结点数 + 1 )/ 2原创 2013-08-05 21:24:40 · 826 阅读 · 0 评论 -
poj 2762 强连通缩点+拓扑排序
这题搞了好久,先是拓扑排序这里没想到,一开始自己傻乎乎的跑去找每层出度为1的点,然后才想到能用拓扑排序来弄。 拓扑排序的时候也弄了挺久的,拓扑排序用的也不多。 题意:给一个图求是否从对于任意两个点能从v 到w 或者从w到v连通。 思路:单连通,先强连通缩点,若scnt为1,或者出度为零的点为0,直接输出YES,若出度为零的点大于1,则代表有分支输出NO。若出度为零的点为1,判断组成的树是否为原创 2013-08-03 20:58:31 · 776 阅读 · 0 评论 -
poj 2553 强连通
题意:给出一个有向图,定义:若节点v所有能到达的点{wi},都能反过来到达v,那么称节点v是sink。题目要求所有的sink点。 思路:强连通缩点找出出度为零的点,输出即可。 这题主要问题是读题,了解题意之后就好做了,然后在数组开小了导致WA?挺莫名其妙的。。 代码: #include #include #include #include using na原创 2013-08-02 16:08:58 · 423 阅读 · 0 评论 -
poj1236强连通缩点
题意:给出每个学校的list 代表该学校能链接的其他学校,问1:至少给几个学校资源使所有学校都得到;2:至少加多少个边能让所有学校相互连通; 思路:1:找出缩点后入度为零的点个数 2:找出缩点后入度为零个数和出度为零个数之间的最大值。 这题主要是在思考出入度和连通间的关系,了解了这个关系后就很水了。同时要注意图一开始就连通的情况。 代码: #include #inc原创 2013-08-01 15:06:45 · 502 阅读 · 0 评论 -
poj2186强连通分量
这题。。。。。。。做了半天,倒是让我更加了解了强连通分量,是我的第二道强连通。 石建让我做一下这道题,我用模板再变形,改了很久之后,能给出的样例都过了。 discussion上的样例都过了,倒是上面N多人说数据没过AC了。。。。。 你让我们这数据过了没AC的生活如何自理。。。 先放着,哪天有思路再来搞。。 /////////////重新做了一遍,发现之前的思路太乱了,整理之后水过了原创 2013-04-28 19:14:36 · 531 阅读 · 0 评论 -
poj 3592 缩点+SPFA
题意:给出一个矩阵,其中#代表墙,不可走,0-9代表权值,*代表可以选择传送。求从0,0点开始出发能获得最大权值。 思路:因为*的出现会有环的情况,先建图连边,将环进行Tarjan缩点,之后再从0,0用SPFA找最长路就行了。 麻烦的地方在于建图,还有各种错 代码: #include #include #include using namespace std; #原创 2013-08-11 12:00:30 · 1097 阅读 · 0 评论