IT民工
加油!
摘要: 大顶堆和小顶堆。/*Accepted 624K 157MS C++ 906B 2012-07-30 17:18:34*/#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<queue>using namespace std;const int MAXM = 30030;int n, m;int a[MAXM];int main(){ while(scanf("%d%d", &m, &n) == 2 阅读全文
posted @ 2012-07-30 17:24 找回失去的 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题意很容易弄懂,就是找到割点,以及割点连接的强连通分量的个数,简称连通数。用tarjan来求,假设1为根结点,则连通数为0。其他点假设连通数为1。根据下面的定义来求。if(low[pnt[i]] >= dfn[cur]) sub[cur] ++;【割点】在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。当割点集合的顶点个数只有1个时,该顶点就是割点。此时,我们可以得到割点的定义如下:若有k的儿子为i,我们定义AnceDeep[i]为结点i辈分最高(深度最浅)的祖先的深度,deep[k]为k的搜索深度 阅读全文
posted @ 2012-07-30 15:59 找回失去的 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 求图的底,就是找出经过缩点后的图中出度为0的点,每个点中的元素就是图的底。然后有序输出,不要多输出空格。将tarjan算法敲的比较熟了。/*Accepted 468K 47MS C++ 1864B 2012-07-30 14:44:59*/#include<cstdio>#include<cstring>#include<cstdlib>const int MAXN = 5050;const int MAXM = MAXN * MAXN;int first[MAXN], next[MAXM], v[MAXM], cnt, top, col, e, N, M, 阅读全文
posted @ 2012-07-30 14:51 找回失去的 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 转自scameeling的空间http://hi.baidu.com/scameeling/item/b135831094ec756771d5e815强连通分量 Kosaraju PK TarjanKosaraju算法对每个不在树中的点开始DFS一次,并记录离开各点的时间,这里是离开的时间,而不是到达时的,比如有图1->2 2->3 则1,2,3分别对应的时间是3 2 1,因为3没有出边,所以最先离开,其次是2,最后是1,DFS后,在同一棵树中的点,如果dfn[v]>dfn[u]则说明点从v有可能到达u,而这棵树中的dfn[]最大的点,肯定可以到达每个点,从而在原图的逆图中, 阅读全文
posted @ 2012-07-30 14:13 找回失去的 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 这道题求被其他牛欢迎的牛的个数。原图是一个有向图,将其缩点后,每一个强连通分量是一个点,找出出度为1的点的个数,如果大于1,那么无解。如果等于1,则输出这个强连通分量中点的个数。/*Accepted 736K 110MS C++ 1999B 2012-07-30 11:49:48*/#include<cstdio>#include<cstring>#include<cstdlib>const int MAXN = 10010;const int MAXM = 50050;int first[MAXN], next[MAXM], v[MAXM], cnt, t 阅读全文
posted @ 2012-07-30 11:57 找回失去的 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 先将图用tarjan缩点,形成无环图。然后求出其中入度为0和出度为0的点的个数ans1和ans2。然后根据题意,入度为0的点需要添加一条边,所以第一问的结果就是ans1。这里的点都是图的缩点。第二问取ans1和ans2大的那个。因为我们先将入度为0的点和出度为0的点连接是最省的,剩下有点的话也得连接,所以是两者的最大值。http://hi.baidu.com/scameeling/item/b135831094ec756771d5e815强连通分量tarjan的介绍/*Accepted 192K 0MS C++ 2109B 2012-07-30 10:53:03*... 阅读全文
posted @ 2012-07-30 11:07 找回失去的 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 要使游客不受道路施工的影响,能够到达各个景点,那么就要使图是至少一个双连通分量,因为施工时只对一道路施工。这样模型就建立了:给定一个连通的无向图G,至少要添加几条边,才能使其变为双连通图。同样用tarjan缩点,然后求出缩点树的叶子结点个数,再按照公式计算。/*Accepted 220K 0MS C++ 1783B 2012-07-30 09:53:31*/#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;const i 阅读全文
posted @ 2012-07-30 10:03 找回失去的 阅读(150) 评论(0) 推荐(0) 编辑