记录自己的想法:在有向图中,如果一些顶点中任意两个顶点都能互相到达(间接或直接),那么这些顶点就构成了一个强连通分量,如果一个顶点没有出度,即它不能到达其他任何顶点,那么该顶点自己就是一个强连通分量。在用kosaraju算法和Tarjan算法求强连通分量的时候,就是给所有的顶点分组染色,同一种颜色的顶点在同一个强连通分量中,记录有多少种颜色(有多少个强联通分量),每个顶点属于哪种颜色(每个顶点在哪...
分类:
编程语言 时间:
2014-12-09 10:38:36
阅读次数:
286
迷宫城堡
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8099 Accepted Submission(s): 3623
Problem Description
为了训练小希的方向感,Gardon建立了...
分类:
移动开发 时间:
2014-12-04 06:28:08
阅读次数:
195
缩点后转化成 DAG图上的单源最长路问题。spfa/dp随便。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int cmp[500001],sum,n,m,Us[500001],Vs[...
分类:
移动开发 时间:
2014-11-30 14:01:07
阅读次数:
226
http://poj.org/problem?id=1236第一问:需要几个学校存在软件,才能通过传递,使得所有的学校都有软件 用tarjan算法求出强联通分量后,将每个联通分量缩成一个点,那么问题1的答案就是入度为0的点的个数 为什么?入度为0的点,肯定不能通过其他学校传送软件给他,所以他必须存在...
分类:
移动开发 时间:
2014-11-21 09:04:11
阅读次数:
145
看了别人博客 http://blog.csdn.net/jokes000/article/details/7538994#include #include #include #include #include #include #include #include #include #define C...
分类:
移动开发 时间:
2014-11-11 22:23:38
阅读次数:
181
两次dfs缩点,然后n次dfs暴搜。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define N 2001 6 vectorG[N],rG[N],vs,G2[N]; 7 typedef vector::iterator IT...
分类:
移动开发 时间:
2014-11-06 12:32:58
阅读次数:
151
10分算法:对于城市网络为一条单向链的数据, 20分算法:对于n 2 #include 3 #include 4 #include 5 using namespace std; 6 #define M 500001 7 #define N 100001 8 struct Node 9 {10 ...
分类:
移动开发 时间:
2014-11-02 16:14:26
阅读次数:
415
题目大意:给定一个n个点的有向图,求有多少点对(x,y),使x沿边可到达y
设f[i][j]为从i到j是否可达
首先强联通分量中的任意两个点均可达 于是我们利用Tarjan缩点
缩点之后是一个拓扑图,我们求出拓扑序,沿着拓扑序从后向前DP,状态转移方程为:
f[i][k]=or{ f[j][k] } (i有直连边到达j,1
鉴于每个点的值只会是1或者0,所以我们可以直接状压,或者干脆开b...
分类:
编程语言 时间:
2014-10-13 15:51:39
阅读次数:
157
求强联通分量的极端好写算法:kosaraju详解!poj1236引题,你确定你要坚持你的大tarjan?...
分类:
移动开发 时间:
2014-09-23 10:25:44
阅读次数:
271
点击打开链接
有向图
把强联通分量缩点后得到一个DAG,然后DP。
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn = 1000 + 10;
vector G[maxn];
int dfn[maxn], low[maxn], sccno...
分类:
其他好文 时间:
2014-09-11 11:13:41
阅读次数:
159