package org.loda.graph;
import org.loda.util.In;
/**
*
* @ClassName: KosarajuSCC
* @Description: Kosaraju强连通算法
*
* 理解:原图g,逆后序order中如果a->b,那么反向图rg中如果也有a->b,表示这是...
分类:
编程语言 时间:
2015-05-25 01:03:13
阅读次数:
251
部分转自[有向图强连通分量]有向图中,如果一个子图内任意两点都可达这这个子图为强连通子图如图所示{1, 2,3,4},{5},{6} 为一个强连通子图求连通分量1.用Kosaraju算法(PS:个人感觉Kosaraju算法比较好理解,但是适用范围不如Tarjan算法广)如果在原图中点 i 可达 点 ...
分类:
其他好文 时间:
2015-05-23 22:33:34
阅读次数:
294
题目链接:POJ 2186解题思路:
kosaraju算法,本以为要缩点,但是题目只要求找到拓扑排序的一个唯一的头,可以水过——通过计算强连通分量的出度。代码:#include
#include
#include
#include
#include using namespace std;int n...
分类:
编程语言 时间:
2015-05-23 16:56:30
阅读次数:
187
链接 :
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=10294
题意 : 告诉你n个等价的命题 和m个关系 比如 (u,v)代表u可以推导出v, 问至少需要补充多少条边。
用强连通缩点成一张DAG。
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2015-05-19 16:33:48
阅读次数:
149
链接 :
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=30726
题意 : 有向图G,求一个最大的点集,使得点集中任意两个节点u和v,满足 要么u可以到达v,要么v可以到达u,或者u和v可以相互到达。
可以强连通缩点成一张DAG,以为每个强连通分量要么选要么不选。求DAG上的最长路 二次建图 用了2种不同的...
分类:
其他好文 时间:
2015-05-19 16:32:12
阅读次数:
112
poj3592:题目链接
题目大意:给出n*m的矩阵,其中数字代表矿物的数量,#代表不可达,*代表传送门,传送到给定的位置。问最多可以收集多少矿物(每个矿物只能被收集一次,可以经过多次)
因为存在传送门,所以就会形成环,用强连通将形成环的缩成一个点,记录每个点代表的矿物数,最后用spfa找出最长路,也就是可以得到的最多的矿物数。(不会出现矩阵外的点)
#include
#include
...
分类:
其他好文 时间:
2015-05-16 18:24:18
阅读次数:
90
poj3114:题目链接
.题目大意:给出n个城市,m条送信的渠道,u v w代表u城市送信到v城市需要w小时。同时如果两个城市属于一个国家,那么送信时间为0,在一个国家中的条件是所有城市相互之间可以送信到达。
强连通找出连通块,那么每个连通块就是一个国家,缩点,重新建图,spfa找出要求的最短路径
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2015-05-16 18:21:21
阅读次数:
420
poj2186:题目链接
题目大意:有n头奶牛,m个关系,A B表示A奶牛认为B是备受关注的,这个关系具有继承性,比如:A B 和 B C那么A奶牛也会认为C是备受关注的,问有多少头奶牛是受到除自己以外所以人关注的
首先进行强连通,那么每个连通块中的点都是受到该连通块中其它点的关注的,进行缩点,原图变成一颗树,如果有且只有一个缩点以后的点的出度为0,那么这个点就是受到所有人关注的。记录下该点代...
分类:
其他好文 时间:
2015-05-16 16:37:21
阅读次数:
130
迷宫城堡
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8872 Accepted Submission(s): 3987
Problem Description
为了训练小希的方向感,Gardon建立了一座大...
分类:
其他好文 时间:
2015-05-13 14:50:28
阅读次数:
125
Destroy Tunnels原来早忘记了离散里含有这么一个叫传递闭包的东西矩阵A的闭包B = A U A^2 U A^3 U ...所以这里直接如果A[i][j]!= 0,建边i->j跑一遍强连通,看是不是只有一个强连通分量,>=2说明不能所有点都!=0输出exists否则说明所有i->j(i!=...
分类:
其他好文 时间:
2015-05-13 06:14:33
阅读次数:
224