题目链接:点击打开链接
给定n个点m条限制
下面限制 u->v
表示u必须排在v前面,问把n个数排成一排有多少种方法。
若有0种输出0
1种输出1
多种输出2
**边的数量题目里少了个0==
思路:
0种就是有环,缩点一下判断强连通分量是不是n个。
1种就是拓扑序时队列里任何时刻都只有一个点
否则就是2种
#pragma comment(linker, "/STAC...
分类:
其他好文 时间:
2014-11-15 18:55:56
阅读次数:
124
本文转载自:http://blog.csdn.net/xinghongduo/article/details/6195337 说到以Tarjan命名的算法,我们经常提到的有3个,其中就包括本文所介绍的求强连通分量的Tarjan算法。而提出此算法的普林斯顿大学的Robert E Tarjan教...
分类:
编程语言 时间:
2014-11-15 14:05:55
阅读次数:
176
题目:有一些多米诺骨牌,现在告诉你他们的相邻顺序,问最少推几次可以把他们全部推倒。
分析:图论,强连通分量。强连通分量上的某点被推到,整个分量都会倒。
求强连通分量,然后缩点,剩下的“点”中每个入度为0的点都要用手推倒;(必要性)
再者,在缩点后的图中,每次找到一个入度为0的点推倒后,不会产生新的入度为0的点;(充分性)
...
分类:
其他好文 时间:
2014-11-11 19:08:04
阅读次数:
192
题目地址:POJ 3648
这题终于AC了。。。。没有专门对新郎新娘加一条边。。
这题前面一直读错题意了,调试了好长时间样例也没过。。这题的意思是只要新郎那一边没有通奸的就可以,然后输出新娘那一边的人。
然后就是对那些有**关系的加边,由于新郎新娘必须要在两侧,所以最后要额外加一条边。然后用强连通判断,逆拓扑染色输出可行解即可。
代码如下:
#include
#include
#in...
分类:
其他好文 时间:
2014-11-11 16:43:31
阅读次数:
278
from wiki: 图算法 基本遍历 深度优先搜索 · 广度优先搜索 · A* · Flood fill 最短路径 Dijkstra · Bellman-Ford · Floyd-Warshall · Kneser图 最小生成树 Prim · Kruskal 强连通分量 Kosaraju算法 · ...
分类:
编程语言 时间:
2014-11-10 06:24:58
阅读次数:
253
题目:ZOJ Problem Set - 3195 Design the city
题意:给出一个图,求三点的连起来的距离。
分析:分别求出三点中任意两点的距离 / 2 = ans
AC代码:
#include
#include
#include
#include
using namespace std;
#define N 50010
#define M...
分类:
其他好文 时间:
2014-11-06 20:09:26
阅读次数:
129
题目地址:POJ 3683
第一次做需要输出可行解的题目。。。大体思路是先用强连通来判断是否有可行解,然后用逆序建图,用拓扑排序来进行染色,然后输出可行解。具体思路见传送门
因为判断的时候少写了一个等号。。检查了好长时间。。sad。。。
代码如下:
#include
#include
#include
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2014-11-05 23:10:02
阅读次数:
218
Tarjan算法 (以发现者Robert Tarjan命名)是一个在图中寻找强连通分量的算法。算法的基本思想为:任选一结点开始进行深度优先搜索dfs(若深度优先搜索结束后仍有未访问的结点,则再从中任选一点再次进行)。搜索过程中已访问的结点不再访问。搜索树的若干子树构成了图的强连通分量。 应用到咱.....
分类:
编程语言 时间:
2014-11-05 18:55:19
阅读次数:
227
题目:poj 2942 Knights of the Round Table
题意:n个骑士经常一起开会,其中有一些两两相互憎恨,他们不能同一桌,开会要表决一些事情,所以必须奇数个人,最少3个,求永远也参加不了会议的人的个数、
分析:这个题目两点
首先,建图求双连通缩点
建图的话,因为相互憎恨的不能再一块,所以要建补图,让能够在一起的所有的连接,这样的话,如果能存在环且环...
分类:
其他好文 时间:
2014-11-05 13:09:39
阅读次数:
277
题目:poj 3177 & 3352
题意:大概意思就是给你一个无向图,让你添加最少的边,让所有点都双连通。
分析:双连通的定义就是任意两个点至少有两条路可达。
其实做法跟添加最少边强连通一样,先对图中已经双连通的缩点,然后重新编号。
这就是著名的Tanjan算法。
通过搜索的思想对所有存在环的边遍相同的号
如果要让所有的点双连通,那么对于缩点后的图中如果度数为 1 的...
分类:
其他好文 时间:
2014-11-04 22:47:28
阅读次数:
387