摘要:
http://poj.org/problem?id=2186经典强连通分支,求解步骤是用tarjan算法求出强连通分支,然后缩点构成DAG,查看DAG中出度为0的点,若个数不等于1则不存在答案,输出0还可以使用tarjan算法的改进版gabow算法,后者在求解强连通分量的根时采用了更简单的方式tarjan代码View Code 1 #include <stdio.h> 2 #include <memory.h> 3 #define e 50001 4 #define v 10001 5 #define MIN(a,b) ((a)<(b)?(a):(b)) 6 st 阅读全文
摘要:
http://poj.org/problem?id=1236问题A:在网络中需要多少电脑才能使所有学校都有软件,通过强连通算法缩点,构建DAG图,图中一定有入度为0的节点,由于这种节点无法通过别的节点传送软件,所以必须放一台电脑,求出入度为0的节点个数即可。问题B:在该网络中最少添加多少线路,使在任意节点放置电脑所有学校都可以有软件,答案是求入度为0的节点个数和入度为0的节点个数的最大值。证明B:1.以下所有点都是孤立的,连接两个点时,出发的边连接的是起始点中出度为0的点,终点中入度为0的点。(1).定义当点数n=1时,如果是缩点构成的一个点必须添加一条反身边,否则不用添加边。(2).当点数n 阅读全文